Projection for comparison (no stereotyping)

Only composite

Corresponds to path b in the mediation (effect of threat composite on projection)

data_bfi <- clean_data_bfi %>% 
  select(sub_id, bfi_number, bfi_targ_pmc, bfi_self_pmc, itt_comp_gmc,
         target_condition, bfi_targ, bfi_self, bfi_stereo, bfi_stereo_pmc) %>% 
  unique() %>% 
  na.omit() 

bfi_nostereo_comp <- lmer(bfi_targ_pmc ~ bfi_self_pmc*itt_comp_gmc +
                     (bfi_self_pmc | sub_id), data = data_bfi)
summary(bfi_nostereo_comp)
## Linear mixed model fit by REML ['lmerMod']
## Formula: bfi_targ_pmc ~ bfi_self_pmc * itt_comp_gmc + (bfi_self_pmc |  
##     sub_id)
##    Data: data_bfi
## 
## REML criterion at convergence: 23334.3
## 
## Scaled residuals: 
##     Min      1Q  Median      3Q     Max 
## -3.7620 -0.6103 -0.0189  0.6510  3.5515 
## 
## Random effects:
##  Groups   Name         Variance Std.Dev. Corr
##  sub_id   (Intercept)  0.15039  0.3878       
##           bfi_self_pmc 0.05783  0.2405   0.64
##  Residual              0.94067  0.9699       
## Number of obs: 8056, groups:  sub_id, 424
## 
## Fixed effects:
##                            Estimate Std. Error t value
## (Intercept)                0.010483   0.021846   0.480
## bfi_self_pmc               0.005026   0.014560   0.345
## itt_comp_gmc              -0.293358   0.020406 -14.376
## bfi_self_pmc:itt_comp_gmc -0.133187   0.013539  -9.837
## 
## Correlation of Fixed Effects:
##             (Intr) bf_sl_ itt_c_
## bfi_slf_pmc  0.446              
## itt_cmp_gmc  0.000  0.000       
## bf_slf_p:__  0.000 -0.015  0.437
tab_model(bfi_nostereo_comp)
  bfi_targ_pmc
Predictors Estimates CI p
(Intercept) 0.01 -0.03 – 0.05 0.631
bfi self pmc 0.01 -0.02 – 0.03 0.730
itt comp gmc -0.29 -0.33 – -0.25 <0.001
bfi self pmc * itt comp
gmc
-0.13 -0.16 – -0.11 <0.001
Random Effects
σ2 0.94
τ00 sub_id 0.15
τ11 sub_id.bfi_self_pmc 0.06
ρ01 sub_id 0.64
ICC 0.21
N sub_id 424
Observations 8056
Marginal R2 / Conditional R2 0.105 / 0.294

Simple Slopes

threat_levels = list(itt_comp_gmc = c(-1.07, 0.0, 1.07))
simpslopes_bfi_nostereo2 <- emtrends(bfi_nostereo_comp, ~ itt_comp_gmc,
                              var ="bfi_self_pmc",
                              at = c(threat_levels))


simpslopes_bfi_nostereo2
##  itt_comp_gmc bfi_self_pmc.trend     SE  df asymp.LCL asymp.UCL
##         -1.07            0.14754 0.0207 Inf    0.1070    0.1881
##          0.00            0.00503 0.0146 Inf   -0.0235    0.0336
##          1.07           -0.13748 0.0204 Inf   -0.1774   -0.0975
## 
## Degrees-of-freedom method: asymptotic 
## Confidence level used: 0.95
pairs(simpslopes_bfi_nostereo2)
##  contrast       estimate     SE  df z.ratio p.value
##  (-1.07) - 0       0.143 0.0145 Inf   9.837  <.0001
##  (-1.07) - 1.07    0.285 0.0290 Inf   9.837  <.0001
##  0 - 1.07          0.143 0.0145 Inf   9.837  <.0001
## 
## Degrees-of-freedom method: asymptotic 
## P value adjustment: tukey method for comparing a family of 3 estimates

Visualization

bfi_nostereo_comp_df <- effect("bfi_self_pmc:itt_comp_gmc",
                         xlevels = list(itt_comp_gmc = c(-1.07, 0.0, 1.07)),
                         mod = bfi_nostereo_comp)

bfi_nostereo_comp_df <- as.data.frame(bfi_nostereo_comp_df)
bfi_nostereo_comp_df$itt_comp_gmc <- as.factor(bfi_nostereo_comp_df$itt_comp_gmc)

ggplot(bfi_nostereo_comp_df, aes(bfi_self_pmc, fit, group = itt_comp_gmc)) +
  geom_smooth(method = "lm", 
                size = .7, 
                se = FALSE,
                colour = "black", 
                aes(linetype = itt_comp_gmc)) +
    theme_minimal(base_size = 13) +
    theme(legend.key.size = unit(1, "cm")) +
  scale_linetype_manual("Threat composite",
                        breaks = c("-1.07", "0", "1.07"), 
                       labels = c("Low",
                                  "Average",
                                  "High"),
                       values = c("solid",
                                  "dashed",
                                  "dotted")) +
    labs(title = "Projection by target-level threat",
         subtitle = "Using the BFI",
       x = "BFI responses for self",
       y = "BFI responses for target")

Assumptions

# checking normality of conditional residuals
qqnorm(residuals(bfi_nostereo_comp), main="Q-Q plot for conditional residuals")

# checking the normality of the random effects (here random intercept):
qqnorm(ranef(bfi_nostereo_comp)$sub_id$bfi_self_pmc,
       main="Q-Q plot for the self random effect")

# Checking residuals for intercept
qqnorm(ranef(bfi_nostereo_comp)$sub_id$`(Intercept)`,
       main="Q-Q plot for the random intercept")

plot_model(bfi_nostereo_comp, type='diag')
## [[1]]

## 
## [[2]]
## [[2]]$sub_id

## 
## 
## [[3]]

## 
## [[4]]

Target condition x composite

Adding condition to test the effect of context

bfi_nostereo <- lmer(bfi_targ_pmc ~ bfi_self_pmc*itt_comp_gmc*target_condition +
                     (bfi_self_pmc | sub_id), data = data_bfi)
summary(bfi_nostereo)
## Linear mixed model fit by REML ['lmerMod']
## Formula: bfi_targ_pmc ~ bfi_self_pmc * itt_comp_gmc * target_condition +  
##     (bfi_self_pmc | sub_id)
##    Data: data_bfi
## 
## REML criterion at convergence: 23271.4
## 
## Scaled residuals: 
##     Min      1Q  Median      3Q     Max 
## -3.7362 -0.6065 -0.0027  0.6459  3.5778 
## 
## Random effects:
##  Groups   Name         Variance Std.Dev. Corr
##  sub_id   (Intercept)  0.1125   0.3354       
##           bfi_self_pmc 0.0520   0.2280   0.59
##  Residual              0.9409   0.9700       
## Number of obs: 8056, groups:  sub_id, 424
## 
## Fixed effects:
##                                                Estimate Std. Error t value
## (Intercept)                                     0.31738    0.05346   5.937
## bfi_self_pmc                                    0.16899    0.03842   4.398
## itt_comp_gmc                                   -0.08692    0.04235  -2.052
## target_conditionLOSS                           -0.59813    0.07366  -8.120
## target_conditionWARM                           -0.22371    0.06553  -3.414
## bfi_self_pmc:itt_comp_gmc                      -0.01817    0.03037  -0.598
## bfi_self_pmc:target_conditionLOSS              -0.27560    0.05325  -5.176
## bfi_self_pmc:target_conditionWARM              -0.13766    0.04715  -2.919
## itt_comp_gmc:target_conditionLOSS              -0.15326    0.06653  -2.304
## itt_comp_gmc:target_conditionWARM              -0.11810    0.05935  -1.990
## bfi_self_pmc:itt_comp_gmc:target_conditionLOSS -0.08013    0.04768  -1.681
## bfi_self_pmc:itt_comp_gmc:target_conditionWARM -0.10539    0.04264  -2.472
## 
## Correlation of Fixed Effects:
##             (Intr) bf_sl_ itt_c_ t_LOSS t_WARM bf__:__ b__:_L b__:_W i__:_L
## bfi_slf_pmc  0.402                                                         
## itt_cmp_gmc  0.787  0.316                                                  
## trgt_cnLOSS -0.726 -0.291 -0.571                                           
## trgt_cnWARM -0.816 -0.328 -0.642  0.592                                    
## bf_slf_p:__  0.317  0.788  0.391 -0.230 -0.259                             
## bf_s_:_LOSS -0.290 -0.722 -0.228  0.386  0.236 -0.569                      
## bf_s_:_WARM -0.327 -0.815 -0.258  0.237  0.405 -0.642   0.588              
## itt__:_LOSS -0.501 -0.201 -0.637 -0.011  0.409 -0.249   0.009  0.164       
## itt__:_WARM -0.561 -0.226 -0.714  0.407  0.272 -0.279   0.163  0.103  0.454
## b__:__:_LOS -0.202 -0.502 -0.249  0.009  0.165 -0.637  -0.022  0.409  0.374
## b__:__:_WAR -0.226 -0.561 -0.279  0.164  0.103 -0.712   0.405  0.261  0.177
##             i__:_W b__:__:_L
## bfi_slf_pmc                 
## itt_cmp_gmc                 
## trgt_cnLOSS                 
## trgt_cnWARM                 
## bf_slf_p:__                 
## bf_s_:_LOSS                 
## bf_s_:_WARM                 
## itt__:_LOSS                 
## itt__:_WARM                 
## b__:__:_LOS  0.178          
## b__:__:_WAR  0.397  0.454
tab_model(bfi_nostereo)
  bfi_targ_pmc
Predictors Estimates CI p
(Intercept) 0.32 0.21 – 0.42 <0.001
bfi self pmc 0.17 0.09 – 0.24 <0.001
itt comp gmc -0.09 -0.17 – -0.00 0.040
target condition [LOSS] -0.60 -0.74 – -0.45 <0.001
target condition [WARM] -0.22 -0.35 – -0.10 0.001
bfi self pmc * itt comp
gmc
-0.02 -0.08 – 0.04 0.550
bfi self pmc * target
condition [LOSS]
-0.28 -0.38 – -0.17 <0.001
bfi self pmc * target
condition [WARM]
-0.14 -0.23 – -0.05 0.004
itt comp gmc * target
condition [LOSS]
-0.15 -0.28 – -0.02 0.021
itt comp gmc * target
condition [WARM]
-0.12 -0.23 – -0.00 0.047
(bfi self pmc * itt comp
gmc) * target condition
[LOSS]
-0.08 -0.17 – 0.01 0.093
(bfi self pmc * itt comp
gmc) * target condition
[WARM]
-0.11 -0.19 – -0.02 0.013
Random Effects
σ2 0.94
τ00 sub_id 0.11
τ11 sub_id.bfi_self_pmc 0.05
ρ01 sub_id 0.59
ICC 0.18
N sub_id 424
Observations 8056
Marginal R2 / Conditional R2 0.142 / 0.295

Simple Slopes

targ_levels <-list(target_condition = c("CONTROL", "LOSS", "WARM"))
simpslopes_bfi_nostereo1 <- emtrends(bfi_nostereo, ~ itt_comp_gmc*target_condition,
                              var ="bfi_self_pmc",
                              at = c(targ_levels, threat_levels))


simpslopes_bfi_nostereo1
##  itt_comp_gmc target_condition bfi_self_pmc.trend     SE  df asymp.LCL
##         -1.07 CONTROL                     0.18843 0.0238 Inf    0.1419
##          0.00 CONTROL                     0.16899 0.0384 Inf    0.0937
##          1.07 CONTROL                     0.14955 0.0671 Inf    0.0181
##         -1.07 LOSS                       -0.00143 0.0707 Inf   -0.1399
##          0.00 LOSS                       -0.10661 0.0369 Inf   -0.1789
##          1.07 LOSS                       -0.21180 0.0286 Inf   -0.2679
##         -1.07 WARM                        0.16354 0.0511 Inf    0.0633
##          0.00 WARM                        0.03133 0.0273 Inf   -0.0222
##          1.07 WARM                       -0.10087 0.0305 Inf   -0.1607
##  asymp.UCL
##     0.2350
##     0.2443
##     0.2810
##     0.1371
##    -0.0344
##    -0.1557
##     0.2638
##     0.0849
##    -0.0411
## 
## Degrees-of-freedom method: asymptotic 
## Confidence level used: 0.95
pairs(simpslopes_bfi_nostereo1)
##  contrast                       estimate     SE  df z.ratio p.value
##  (-1.07 CONTROL) - 0 CONTROL     0.01944 0.0325 Inf   0.598  0.9996
##  (-1.07 CONTROL) - 1.07 CONTROL  0.03888 0.0650 Inf   0.598  0.9996
##  (-1.07 CONTROL) - (-1.07 LOSS)  0.18986 0.0745 Inf   2.547  0.2096
##  (-1.07 CONTROL) - 0 LOSS        0.29504 0.0439 Inf   6.727  <.0001
##  (-1.07 CONTROL) - 1.07 LOSS     0.40023 0.0372 Inf  10.761  <.0001
##  (-1.07 CONTROL) - (-1.07 WARM)  0.02489 0.0564 Inf   0.441  1.0000
##  (-1.07 CONTROL) - 0 WARM        0.15710 0.0362 Inf   4.337  0.0005
##  (-1.07 CONTROL) - 1.07 WARM     0.28931 0.0387 Inf   7.482  <.0001
##  0 CONTROL - 1.07 CONTROL        0.01944 0.0325 Inf   0.598  0.9996
##  0 CONTROL - (-1.07 LOSS)        0.17042 0.0804 Inf   2.119  0.4602
##  0 CONTROL - 0 LOSS              0.27560 0.0532 Inf   5.176  <.0001
##  0 CONTROL - 1.07 LOSS           0.38079 0.0479 Inf   7.949  <.0001
##  0 CONTROL - (-1.07 WARM)        0.00545 0.0640 Inf   0.085  1.0000
##  0 CONTROL - 0 WARM              0.13766 0.0472 Inf   2.919  0.0841
##  0 CONTROL - 1.07 WARM           0.26986 0.0491 Inf   5.501  <.0001
##  1.07 CONTROL - (-1.07 LOSS)     0.15098 0.0974 Inf   1.550  0.8318
##  1.07 CONTROL - 0 LOSS           0.25616 0.0765 Inf   3.347  0.0232
##  1.07 CONTROL - 1.07 LOSS        0.36134 0.0729 Inf   4.955  <.0001
##  1.07 CONTROL - (-1.07 WARM)    -0.01400 0.0844 Inf  -0.166  1.0000
##  1.07 CONTROL - 0 WARM           0.11821 0.0724 Inf   1.632  0.7873
##  1.07 CONTROL - 1.07 WARM        0.25042 0.0737 Inf   3.398  0.0195
##  (-1.07 LOSS) - 0 LOSS           0.10518 0.0393 Inf   2.675  0.1568
##  (-1.07 LOSS) - 1.07 LOSS        0.21037 0.0787 Inf   2.675  0.1568
##  (-1.07 LOSS) - (-1.07 WARM)    -0.16497 0.0872 Inf  -1.891  0.6199
##  (-1.07 LOSS) - 0 WARM          -0.03276 0.0758 Inf  -0.432  1.0000
##  (-1.07 LOSS) - 1.07 WARM        0.09945 0.0770 Inf   1.292  0.9340
##  0 LOSS - 1.07 LOSS              0.10518 0.0393 Inf   2.675  0.1568
##  0 LOSS - (-1.07 WARM)          -0.27015 0.0630 Inf  -4.285  0.0006
##  0 LOSS - 0 WARM                -0.13795 0.0459 Inf  -3.006  0.0661
##  0 LOSS - 1.07 WARM             -0.00574 0.0479 Inf  -0.120  1.0000
##  1.07 LOSS - (-1.07 WARM)       -0.37534 0.0586 Inf  -6.404  <.0001
##  1.07 LOSS - 0 WARM             -0.24313 0.0396 Inf  -6.143  <.0001
##  1.07 LOSS - 1.07 WARM          -0.11092 0.0418 Inf  -2.652  0.1655
##  (-1.07 WARM) - 0 WARM           0.13221 0.0320 Inf   4.128  0.0012
##  (-1.07 WARM) - 1.07 WARM        0.26442 0.0641 Inf   4.128  0.0012
##  0 WARM - 1.07 WARM              0.13221 0.0320 Inf   4.128  0.0012
## 
## Degrees-of-freedom method: asymptotic 
## P value adjustment: tukey method for comparing a family of 9 estimates

Visualization

bfi_no_stereo_df <- effect("bfi_self_pmc:itt_comp_gmc:target_condition",
                         xlevels = list(itt_comp_gmc = c(-1.07, 0.0, 1.07),
                                        target_condition = c("CONTROL",
                                                             "WARM",
                                                             "LOSS")),
                         mod = bfi_nostereo)

bfi_no_stereo_df <- as.data.frame(bfi_no_stereo_df)
bfi_no_stereo_df$itt_comp_gmc <- as.factor(bfi_no_stereo_df$itt_comp_gmc)
bfi_no_stereo_df$target_condition <- as.factor(bfi_no_stereo_df$target_condition)

bfi_no_stereo_df %<>% 
  mutate(target_condition = forcats::fct_relevel(target_condition, c("CONTROL", "WARM", "LOSS")))

target_labels <- c("CONTROL" = "Control",
                   "WARM" = "Warm",
                   "LOSS" = "Loss")

ggplot(bfi_no_stereo_df, aes(bfi_self_pmc, fit, group = itt_comp_gmc)) +
  geom_smooth(method = "lm", 
                size = .7, 
                se = FALSE,
                colour = "black", 
                aes(linetype = itt_comp_gmc)) +
    theme_minimal(base_size = 13) +
    theme(legend.key.size = unit(1, "cm")) +
  facet_wrap(~target_condition,
             labeller = labeller(target_condition = target_labels)) +
  scale_linetype_manual("Threat composite",
                        breaks = c("-1.07", "0", "1.07"), 
                       labels = c("Low",
                                  "Average",
                                  "High"),
                       values = c("solid",
                                  "dashed",
                                  "dotted")) +
    labs(title = "Projection by target-level threat and target condition",
         subtitle = "Using the BFI",
       x = "BFI responses for self",
       y = "BFI responses for target")

Raw

plot_data_int1 <- data_bfi %>% 
  select(sub_id, bfi_number, bfi_self_pmc, bfi_targ_pmc, itt_comp_gmc, target_condition)

plot_data_int1$itt_comp_gmc[data_bfi$itt_comp_gmc < -1.07] <- "Low"
plot_data_int1$itt_comp_gmc[data_bfi$itt_comp_gmc > -1.07 & data_bfi$itt_comp_gmc < 1.07] <- "Ave"
plot_data_int1$itt_comp_gmc[data_bfi$itt_comp_gmc > 1.07] <- "High"


  # group_by(bfi_self_pmc, itt_comp_gmc, target_condition) %>% 
  # mutate(mean = mean(bfi_targ_pmc),
  #        sd = sd(bfi_targ_pmc))

ggplot(plot_data_int1, aes(bfi_self_pmc, bfi_targ_pmc, group = itt_comp_gmc)) +
  geom_smooth(method = "lm", 
                size = .7, 
                colour = "black", 
                aes(linetype = itt_comp_gmc)) +
    theme_minimal(base_size = 13) +
    theme(legend.key.size = unit(1, "cm")) +
  facet_wrap(~target_condition,
             labeller = labeller(target_condition = target_labels))

Assumptions

# checking normality of conditional residuals
qqnorm(residuals(bfi_nostereo), main="Q-Q plot for conditional residuals")

# checking the normality of the random effects (here random intercept):
qqnorm(ranef(bfi_nostereo)$sub_id$bfi_self_pmc,
       main="Q-Q plot for the self random effect")

# Checking residuals for intercept
qqnorm(ranef(bfi_nostereo)$sub_id$`(Intercept)`,
       main="Q-Q plot for the random intercept")

plot_model(bfi_nostereo, type='diag')
## [[1]]

## 
## [[2]]
## [[2]]$sub_id

## 
## 
## [[3]]

## 
## [[4]]

More normal, but a little tail

Residual Counter-projection (with steroetyping)

Only composite

Results

bfi_stereo_comp <- lmer(bfi_targ_pmc ~ bfi_self_pmc*itt_comp_gmc*bfi_stereo_pmc +
                     (bfi_self_pmc + bfi_stereo_pmc | sub_id), data = data_bfi)
summary(bfi_stereo_comp)
## Linear mixed model fit by REML ['lmerMod']
## Formula: bfi_targ_pmc ~ bfi_self_pmc * itt_comp_gmc * bfi_stereo_pmc +  
##     (bfi_self_pmc + bfi_stereo_pmc | sub_id)
##    Data: data_bfi
## 
## REML criterion at convergence: 21421.3
## 
## Scaled residuals: 
##     Min      1Q  Median      3Q     Max 
## -4.2701 -0.5006 -0.0365  0.6200  4.2064 
## 
## Random effects:
##  Groups   Name           Variance Std.Dev. Corr       
##  sub_id   (Intercept)    0.12671  0.3560              
##           bfi_self_pmc   0.03947  0.1987    0.46      
##           bfi_stereo_pmc 0.06654  0.2580   -0.69 -0.07
##  Residual                0.70284  0.8384              
## Number of obs: 8056, groups:  sub_id, 424
## 
## Fixed effects:
##                                           Estimate Std. Error t value
## (Intercept)                               0.020974   0.020143   1.041
## bfi_self_pmc                              0.067192   0.012663   5.306
## itt_comp_gmc                             -0.258769   0.018832 -13.741
## bfi_stereo_pmc                            0.224519   0.015642  14.354
## bfi_self_pmc:itt_comp_gmc                -0.072592   0.011798  -6.153
## bfi_self_pmc:bfi_stereo_pmc              -0.017398   0.006252  -2.783
## itt_comp_gmc:bfi_stereo_pmc               0.190791   0.014562  13.102
## bfi_self_pmc:itt_comp_gmc:bfi_stereo_pmc -0.005255   0.005662  -0.928
## 
## Correlation of Fixed Effects:
##                (Intr) bf_sl_ itt_c_ bf_st_ bf_slf_pmc:t__ bf_slf_pmc:b__ i__:__
## bfi_slf_pmc     0.293                                                          
## itt_cmp_gmc    -0.001  0.008                                                   
## bfi_str_pmc    -0.480  0.052  0.026                                            
## bf_slf_pmc:t__  0.008 -0.026  0.287 -0.003                                     
## bf_slf_pmc:b__  0.140 -0.084 -0.009  0.073  0.046                              
## itt_cmp_:__     0.026 -0.004 -0.481 -0.060  0.052         -0.001               
## bf_s_:__:__    -0.010  0.046  0.142 -0.004 -0.079         -0.180          0.057
tab_model(bfi_stereo_comp)
  bfi_targ_pmc
Predictors Estimates CI p
(Intercept) 0.02 -0.02 – 0.06 0.298
bfi self pmc 0.07 0.04 – 0.09 <0.001
itt comp gmc -0.26 -0.30 – -0.22 <0.001
bfi stereo pmc 0.22 0.19 – 0.26 <0.001
bfi self pmc * itt comp
gmc
-0.07 -0.10 – -0.05 <0.001
bfi self pmc * bfi stereo
pmc
-0.02 -0.03 – -0.01 0.005
itt comp gmc * bfi stereo
pmc
0.19 0.16 – 0.22 <0.001
(bfi self pmc * itt comp
gmc) * bfi stereo pmc
-0.01 -0.02 – 0.01 0.353
Random Effects
σ2 0.70
τ00 sub_id 0.13
τ11 sub_id.bfi_self_pmc 0.04
τ11 sub_id.bfi_stereo_pmc 0.07
ρ01 0.46
-0.69
ICC 0.31
N sub_id 424
Observations 8056
Marginal R2 / Conditional R2 0.219 / 0.458

Simple Slopes

simpslopes_bfi_stereo2 <- emtrends(bfi_stereo_comp, ~ itt_comp_gmc,
                              var ="bfi_self_pmc",
                              at = c(threat_levels))


simpslopes_bfi_stereo2
##  itt_comp_gmc bfi_self_pmc.trend     SE  df asymp.LCL asymp.UCL
##         -1.07            0.14512 0.0181 Inf    0.1096    0.1807
##          0.00            0.06757 0.0127 Inf    0.0427    0.0924
##          1.07           -0.00999 0.0177 Inf   -0.0446    0.0246
## 
## Degrees-of-freedom method: asymptotic 
## Confidence level used: 0.95
pairs(simpslopes_bfi_stereo2)
##  contrast       estimate     SE  df z.ratio p.value
##  (-1.07) - 0      0.0776 0.0126 Inf   6.138  <.0001
##  (-1.07) - 1.07   0.1551 0.0253 Inf   6.138  <.0001
##  0 - 1.07         0.0776 0.0126 Inf   6.138  <.0001
## 
## Degrees-of-freedom method: asymptotic 
## P value adjustment: tukey method for comparing a family of 3 estimates

Visualization

bfi_stereo_comp_df <- effect("bfi_self_pmc:itt_comp_gmc",
                         xlevels = list(itt_comp_gmc = c(-1.07, 0.0, 1.07)),
                         mod = bfi_stereo_comp)

bfi_stereo_comp_df <- as.data.frame(bfi_stereo_comp_df)
bfi_stereo_comp_df$itt_comp_gmc <- as.factor(bfi_stereo_comp_df$itt_comp_gmc)

ggplot(bfi_stereo_comp_df, aes(bfi_self_pmc, fit, group = itt_comp_gmc)) +
  geom_smooth(method = "lm", 
                size = .7, 
                se = FALSE,
                colour = "black", 
                aes(linetype = itt_comp_gmc)) +
    theme_minimal(base_size = 13) +
    theme(legend.key.size = unit(1, "cm")) +
  scale_linetype_manual("Threat composite",
                        breaks = c("-1.07", "0", "1.07"), 
                       labels = c("Low",
                                  "Average",
                                  "High"),
                       values = c("solid",
                                  "dashed",
                                  "dotted")) +
    labs(title = "Residual projection by target-level threat",
         subtitle = "Using the BFI; After accounting for stereotyping",
       x = "BFI responses for self",
       y = "BFI responses for target")

Assumptions

# checking normality of conditional residuals
qqnorm(residuals(bfi_stereo_comp), main="Q-Q plot for conditional residuals")

# checking the normality of the random effects (here random intercept):
qqnorm(ranef(bfi_stereo_comp)$sub_id$bfi_self_pmc,
       main="Q-Q plot for the self random effect")

qqnorm(ranef(bfi_stereo_comp)$sub_id$bfi_stereo_pmc,
       main="Q-Q plot for the stereotyping random effect")

# Checking residuals for intercept
qqnorm(ranef(bfi_stereo_comp)$sub_id$`(Intercept)`,
       main="Q-Q plot for the random intercept")

plot_model(bfi_stereo_comp, type='diag')
## [[1]]

## 
## [[2]]
## [[2]]$sub_id

## 
## 
## [[3]]

## 
## [[4]]

Also seems to have slight tails, basically when stereotyping is added to the model

Composite x Target Condition

Results

bfi_stereo <- lmer(bfi_targ_pmc ~ bfi_self_pmc*itt_comp_gmc*target_condition*bfi_stereo_pmc +
                     (bfi_self_pmc + bfi_stereo_pmc | sub_id), data = data_bfi)
summary(bfi_stereo)
## Linear mixed model fit by REML ['lmerMod']
## Formula: bfi_targ_pmc ~ bfi_self_pmc * itt_comp_gmc * target_condition *  
##     bfi_stereo_pmc + (bfi_self_pmc + bfi_stereo_pmc | sub_id)
##    Data: data_bfi
## 
## REML criterion at convergence: 21350
## 
## Scaled residuals: 
##     Min      1Q  Median      3Q     Max 
## -4.2639 -0.5079 -0.0245  0.6133  4.1841 
## 
## Random effects:
##  Groups   Name           Variance Std.Dev. Corr       
##  sub_id   (Intercept)    0.08848  0.2975              
##           bfi_self_pmc   0.03764  0.1940    0.43      
##           bfi_stereo_pmc 0.04944  0.2224   -0.56  0.03
##  Residual                0.70259  0.8382              
## Number of obs: 8056, groups:  sub_id, 424
## 
## Fixed effects:
##                                                                Estimate
## (Intercept)                                                    0.287634
## bfi_self_pmc                                                   0.163365
## itt_comp_gmc                                                  -0.099815
## target_conditionLOSS                                          -0.617582
## target_conditionWARM                                          -0.188058
## bfi_stereo_pmc                                                 0.007728
## bfi_self_pmc:itt_comp_gmc                                      0.002811
## bfi_self_pmc:target_conditionLOSS                             -0.147419
## bfi_self_pmc:target_conditionWARM                             -0.065816
## itt_comp_gmc:target_conditionLOSS                             -0.038304
## itt_comp_gmc:target_conditionWARM                             -0.053453
## bfi_self_pmc:bfi_stereo_pmc                                   -0.035752
## itt_comp_gmc:bfi_stereo_pmc                                    0.062868
## target_conditionLOSS:bfi_stereo_pmc                            0.451530
## target_conditionWARM:bfi_stereo_pmc                            0.204024
## bfi_self_pmc:itt_comp_gmc:target_conditionLOSS                -0.067582
## bfi_self_pmc:itt_comp_gmc:target_conditionWARM                -0.086188
## bfi_self_pmc:itt_comp_gmc:bfi_stereo_pmc                      -0.025348
## bfi_self_pmc:target_conditionLOSS:bfi_stereo_pmc              -0.014208
## bfi_self_pmc:target_conditionWARM:bfi_stereo_pmc               0.021346
## itt_comp_gmc:target_conditionLOSS:bfi_stereo_pmc               0.029386
## itt_comp_gmc:target_conditionWARM:bfi_stereo_pmc               0.054390
## bfi_self_pmc:itt_comp_gmc:target_conditionLOSS:bfi_stereo_pmc  0.051846
## bfi_self_pmc:itt_comp_gmc:target_conditionWARM:bfi_stereo_pmc  0.022880
##                                                               Std. Error
## (Intercept)                                                     0.047980
## bfi_self_pmc                                                    0.033696
## itt_comp_gmc                                                    0.038063
## target_conditionLOSS                                            0.066315
## target_conditionWARM                                            0.058848
## bfi_stereo_pmc                                                  0.037254
## bfi_self_pmc:itt_comp_gmc                                       0.026747
## bfi_self_pmc:target_conditionLOSS                               0.047254
## bfi_self_pmc:target_conditionWARM                               0.041495
## itt_comp_gmc:target_conditionLOSS                               0.059942
## itt_comp_gmc:target_conditionWARM                               0.053410
## bfi_self_pmc:bfi_stereo_pmc                                     0.015259
## itt_comp_gmc:bfi_stereo_pmc                                     0.029961
## target_conditionLOSS:bfi_stereo_pmc                             0.053965
## target_conditionWARM:bfi_stereo_pmc                             0.046664
## bfi_self_pmc:itt_comp_gmc:target_conditionLOSS                  0.042426
## bfi_self_pmc:itt_comp_gmc:target_conditionWARM                  0.037642
## bfi_self_pmc:itt_comp_gmc:bfi_stereo_pmc                        0.012337
## bfi_self_pmc:target_conditionLOSS:bfi_stereo_pmc                0.023531
## bfi_self_pmc:target_conditionWARM:bfi_stereo_pmc                0.020008
## itt_comp_gmc:target_conditionLOSS:bfi_stereo_pmc                0.048745
## itt_comp_gmc:target_conditionWARM:bfi_stereo_pmc                0.042413
## bfi_self_pmc:itt_comp_gmc:target_conditionLOSS:bfi_stereo_pmc   0.020462
## bfi_self_pmc:itt_comp_gmc:target_conditionWARM:bfi_stereo_pmc   0.018110
##                                                               t value
## (Intercept)                                                     5.995
## bfi_self_pmc                                                    4.848
## itt_comp_gmc                                                   -2.622
## target_conditionLOSS                                           -9.313
## target_conditionWARM                                           -3.196
## bfi_stereo_pmc                                                  0.207
## bfi_self_pmc:itt_comp_gmc                                       0.105
## bfi_self_pmc:target_conditionLOSS                              -3.120
## bfi_self_pmc:target_conditionWARM                              -1.586
## itt_comp_gmc:target_conditionLOSS                              -0.639
## itt_comp_gmc:target_conditionWARM                              -1.001
## bfi_self_pmc:bfi_stereo_pmc                                    -2.343
## itt_comp_gmc:bfi_stereo_pmc                                     2.098
## target_conditionLOSS:bfi_stereo_pmc                             8.367
## target_conditionWARM:bfi_stereo_pmc                             4.372
## bfi_self_pmc:itt_comp_gmc:target_conditionLOSS                 -1.593
## bfi_self_pmc:itt_comp_gmc:target_conditionWARM                 -2.290
## bfi_self_pmc:itt_comp_gmc:bfi_stereo_pmc                       -2.055
## bfi_self_pmc:target_conditionLOSS:bfi_stereo_pmc               -0.604
## bfi_self_pmc:target_conditionWARM:bfi_stereo_pmc                1.067
## itt_comp_gmc:target_conditionLOSS:bfi_stereo_pmc                0.603
## itt_comp_gmc:target_conditionWARM:bfi_stereo_pmc                1.282
## bfi_self_pmc:itt_comp_gmc:target_conditionLOSS:bfi_stereo_pmc   2.534
## bfi_self_pmc:itt_comp_gmc:target_conditionWARM:bfi_stereo_pmc   1.263
tab_model(bfi_stereo)
  bfi_targ_pmc
Predictors Estimates CI p
(Intercept) 0.29 0.19 – 0.38 <0.001
bfi self pmc 0.16 0.10 – 0.23 <0.001
itt comp gmc -0.10 -0.17 – -0.03 0.009
target condition [LOSS] -0.62 -0.75 – -0.49 <0.001
target condition [WARM] -0.19 -0.30 – -0.07 0.001
bfi stereo pmc 0.01 -0.07 – 0.08 0.836
bfi self pmc * itt comp
gmc
0.00 -0.05 – 0.06 0.916
bfi self pmc * target
condition [LOSS]
-0.15 -0.24 – -0.05 0.002
bfi self pmc * target
condition [WARM]
-0.07 -0.15 – 0.02 0.113
itt comp gmc * target
condition [LOSS]
-0.04 -0.16 – 0.08 0.523
itt comp gmc * target
condition [WARM]
-0.05 -0.16 – 0.05 0.317
bfi self pmc * bfi stereo
pmc
-0.04 -0.07 – -0.01 0.019
itt comp gmc * bfi stereo
pmc
0.06 0.00 – 0.12 0.036
target condition [LOSS] *
bfi stereo pmc
0.45 0.35 – 0.56 <0.001
target condition [WARM] *
bfi stereo pmc
0.20 0.11 – 0.30 <0.001
(bfi self pmc * itt comp
gmc) * target condition
[LOSS]
-0.07 -0.15 – 0.02 0.111
(bfi self pmc * itt comp
gmc) * target condition
[WARM]
-0.09 -0.16 – -0.01 0.022
(bfi self pmc * itt comp
gmc) * bfi stereo pmc
-0.03 -0.05 – -0.00 0.040
(bfi self pmc * target
condition [LOSS]) * bfi
stereo pmc
-0.01 -0.06 – 0.03 0.546
(bfi self pmc * target
condition [WARM]) * bfi
stereo pmc
0.02 -0.02 – 0.06 0.286
(itt comp gmc * target
condition [LOSS]) * bfi
stereo pmc
0.03 -0.07 – 0.12 0.547
(itt comp gmc * target
condition [WARM]) * bfi
stereo pmc
0.05 -0.03 – 0.14 0.200
(bfi self pmc * itt comp
gmc * target condition
[LOSS]) * bfi stereo pmc
0.05 0.01 – 0.09 0.011
(bfi self pmc * itt comp
gmc * target condition
[WARM]) * bfi stereo pmc
0.02 -0.01 – 0.06 0.206
Random Effects
σ2 0.70
τ00 sub_id 0.09
τ11 sub_id.bfi_self_pmc 0.04
τ11 sub_id.bfi_stereo_pmc 0.05
ρ01 0.43
-0.56
ICC 0.25
N sub_id 424
Observations 8056
Marginal R2 / Conditional R2 0.276 / 0.457

Simple Slopes

simpslopes_bfi_stereo1 <- emtrends(bfi_stereo, ~ itt_comp_gmc*target_condition,
                              var ="bfi_self_pmc",
                              at = c(targ_levels, threat_levels))


simpslopes_bfi_stereo1
##  itt_comp_gmc target_condition bfi_self_pmc.trend     SE  df asymp.LCL
##         -1.07 CONTROL                      0.1605 0.0212 Inf    0.1190
##          0.00 CONTROL                      0.1641 0.0337 Inf    0.0981
##          1.07 CONTROL                      0.1677 0.0589 Inf    0.0523
##         -1.07 LOSS                         0.0869 0.0637 Inf   -0.0380
##          0.00 LOSS                         0.0170 0.0332 Inf   -0.0481
##          1.07 LOSS                        -0.0529 0.0252 Inf   -0.1023
##         -1.07 WARM                         0.1870 0.0453 Inf    0.0982
##          0.00 WARM                         0.0979 0.0242 Inf    0.0503
##          1.07 WARM                         0.0087 0.0270 Inf   -0.0443
##  asymp.UCL
##    0.20205
##    0.23022
##    0.28311
##    0.21183
##    0.08210
##   -0.00344
##    0.27587
##    0.14538
##    0.06167
## 
## Degrees-of-freedom method: asymptotic 
## Confidence level used: 0.95
pairs(simpslopes_bfi_stereo1)
##  contrast                       estimate     SE  df z.ratio p.value
##  (-1.07 CONTROL) - 0 CONTROL    -0.00359 0.0286 Inf  -0.125  1.0000
##  (-1.07 CONTROL) - 1.07 CONTROL -0.00718 0.0573 Inf  -0.125  1.0000
##  (-1.07 CONTROL) - (-1.07 LOSS)  0.07361 0.0672 Inf   1.096  0.9750
##  (-1.07 CONTROL) - 0 LOSS        0.14352 0.0394 Inf   3.644  0.0082
##  (-1.07 CONTROL) - 1.07 LOSS     0.21344 0.0329 Inf   6.480  <.0001
##  (-1.07 CONTROL) - (-1.07 WARM) -0.02647 0.0500 Inf  -0.529  0.9998
##  (-1.07 CONTROL) - 0 WARM        0.06268 0.0322 Inf   1.947  0.5806
##  (-1.07 CONTROL) - 1.07 WARM     0.15184 0.0343 Inf   4.423  0.0003
##  0 CONTROL - 1.07 CONTROL       -0.00359 0.0286 Inf  -0.125  1.0000
##  0 CONTROL - (-1.07 LOSS)        0.07720 0.0721 Inf   1.071  0.9784
##  0 CONTROL - 0 LOSS              0.14711 0.0473 Inf   3.109  0.0490
##  0 CONTROL - 1.07 LOSS           0.21703 0.0421 Inf   5.154  <.0001
##  0 CONTROL - (-1.07 WARM)       -0.02288 0.0565 Inf  -0.405  1.0000
##  0 CONTROL - 0 WARM              0.06628 0.0415 Inf   1.596  0.8075
##  0 CONTROL - 1.07 WARM           0.15543 0.0432 Inf   3.597  0.0098
##  1.07 CONTROL - (-1.07 LOSS)     0.08079 0.0868 Inf   0.931  0.9912
##  1.07 CONTROL - 0 LOSS           0.15070 0.0676 Inf   2.230  0.3861
##  1.07 CONTROL - 1.07 LOSS        0.22062 0.0640 Inf   3.445  0.0167
##  1.07 CONTROL - (-1.07 WARM)    -0.01929 0.0743 Inf  -0.260  1.0000
##  1.07 CONTROL - 0 WARM           0.06987 0.0637 Inf   1.097  0.9748
##  1.07 CONTROL - 1.07 WARM        0.15902 0.0648 Inf   2.455  0.2543
##  (-1.07 LOSS) - 0 LOSS           0.06992 0.0353 Inf   1.981  0.5570
##  (-1.07 LOSS) - 1.07 LOSS        0.13983 0.0706 Inf   1.981  0.5570
##  (-1.07 LOSS) - (-1.07 WARM)    -0.10008 0.0782 Inf  -1.280  0.9374
##  (-1.07 LOSS) - 0 WARM          -0.01092 0.0682 Inf  -0.160  1.0000
##  (-1.07 LOSS) - 1.07 WARM        0.07823 0.0692 Inf   1.130  0.9698
##  0 LOSS - 1.07 LOSS              0.06992 0.0353 Inf   1.981  0.5570
##  0 LOSS - (-1.07 WARM)          -0.16999 0.0562 Inf  -3.025  0.0625
##  0 LOSS - 0 WARM                -0.08084 0.0411 Inf  -1.966  0.5673
##  0 LOSS - 1.07 WARM              0.00832 0.0428 Inf   0.194  1.0000
##  1.07 LOSS - (-1.07 WARM)       -0.23991 0.0519 Inf  -4.624  0.0001
##  1.07 LOSS - 0 WARM             -0.15075 0.0350 Inf  -4.308  0.0006
##  1.07 LOSS - 1.07 WARM          -0.06160 0.0370 Inf  -1.666  0.7674
##  (-1.07 WARM) - 0 WARM           0.08916 0.0284 Inf   3.143  0.0442
##  (-1.07 WARM) - 1.07 WARM        0.17831 0.0567 Inf   3.143  0.0442
##  0 WARM - 1.07 WARM              0.08916 0.0284 Inf   3.143  0.0442
## 
## Degrees-of-freedom method: asymptotic 
## P value adjustment: tukey method for comparing a family of 9 estimates

With residual counter-projection, people do not project nor counter-project when they report higher than average threat. Otherwise, people project normally. Though slightly different from predicted, this demonstrates that threat does reduce projection after accounting for stereotyping with those who perceive high threat, but not others. However, there is not a residual effect of counter-projection with the BFI - which I believe is consistent with PSPB.

Is this consistent with PSPB?

Visualization

bfi_stereo_df <- effect("bfi_self_pmc:itt_comp_gmc:target_condition",
                         xlevels = list(itt_comp_gmc = c(-1.07, 0.0, 1.07),
                                        target_condition = c("CONTROL",
                                                             "WARM",
                                                             "LOSS")),
                         mod = bfi_stereo)

bfi_stereo_df <- as.data.frame(bfi_stereo_df)
bfi_stereo_df$itt_comp_gmc <- as.factor(bfi_stereo_df$itt_comp_gmc)
bfi_stereo_df$target_condition <- as.factor(bfi_stereo_df$target_condition)

bfi_stereo_df %<>% 
  mutate(target_condition = forcats::fct_relevel(target_condition, c("CONTROL", "WARM", "LOSS")))

ggplot(bfi_stereo_df, aes(bfi_self_pmc, fit, group = itt_comp_gmc)) +
  geom_smooth(method = "lm", 
                size = .7, 
                se = FALSE,
                colour = "black", 
                aes(linetype = itt_comp_gmc)) +
    theme_minimal(base_size = 13) +
    theme(legend.key.size = unit(1, "cm")) +
  facet_wrap(~target_condition,
             labeller = labeller(target_condition = target_labels)) +
  scale_linetype_manual("Threat composite",
                        breaks = c("-1.07", "0", "1.07"), 
                       labels = c("Low",
                                  "Average",
                                  "High"),
                       values = c("solid",
                                  "dashed",
                                  "dotted"))+
    labs(title = "Residual projection by target-level threat and target condition",
         subtitle = "Using the BFI; After accounting for stereotyping",
       x = "BFI responses for self",
       y = "BFI responses for target")

Assumptions

# checking normality of conditional residuals
qqnorm(residuals(bfi_stereo), main="Q-Q plot for conditional residuals")

# checking the normality of the random effects 
qqnorm(ranef(bfi_stereo)$sub_id$bfi_self_pmc,
       main="Q-Q plot for the self random effect")

qqnorm(ranef(bfi_stereo)$sub_id$bfi_stereo_pmc,
       main="Q-Q plot for the stereotyping random effect")

# Checking residuals for intercept
qqnorm(ranef(bfi_stereo)$sub_id$`(Intercept)`,
       main="Q-Q plot for the random intercept")

plot_model(bfi_stereo, type='diag')
## [[1]]

## 
## [[2]]
## [[2]]$sub_id

## 
## 
## [[3]]

## 
## [[4]]

Definitely a tail, but only a few points, so most likely robust; stereo is the worst, may need to transform it

Checking effect of removing UO participants

No stereotyping

Only composite

data_bfi_prolific <- clean_data_bfi %>% 
  filter(data_site != "uo") %>% 
  select(sub_id, bfi_number, bfi_targ_pmc, bfi_self_pmc, itt_comp_gmc,
         target_condition, bfi_targ, bfi_self, bfi_stereo, bfi_stereo_pmc) %>% 
  unique() %>% 
  na.omit() 

bfi_nostereo_comp_pro <- lmer(bfi_targ_pmc ~ bfi_self_pmc*itt_comp_gmc +
                     (bfi_self_pmc | sub_id), data = data_bfi_prolific)
summary(bfi_nostereo_comp_pro)
## Linear mixed model fit by REML ['lmerMod']
## Formula: bfi_targ_pmc ~ bfi_self_pmc * itt_comp_gmc + (bfi_self_pmc |  
##     sub_id)
##    Data: data_bfi_prolific
## 
## REML criterion at convergence: 22328.3
## 
## Scaled residuals: 
##     Min      1Q  Median      3Q     Max 
## -3.7520 -0.6118 -0.0211  0.6556  3.5462 
## 
## Random effects:
##  Groups   Name         Variance Std.Dev. Corr
##  sub_id   (Intercept)  0.15466  0.3933       
##           bfi_self_pmc 0.05776  0.2403   0.65
##  Residual              0.94523  0.9722       
## Number of obs: 7695, groups:  sub_id, 405
## 
## Fixed effects:
##                            Estimate Std. Error t value
## (Intercept)                0.001278   0.022604   0.057
## bfi_self_pmc               0.005070   0.014922   0.340
## itt_comp_gmc              -0.290318   0.021185 -13.704
## bfi_self_pmc:itt_comp_gmc -0.137288   0.013909  -9.870
## 
## Correlation of Fixed Effects:
##             (Intr) bf_sl_ itt_c_
## bfi_slf_pmc  0.452              
## itt_cmp_gmc -0.015 -0.005       
## bf_slf_p:__ -0.005 -0.029  0.443
tab_model(bfi_nostereo_comp_pro)
  bfi_targ_pmc
Predictors Estimates CI p
(Intercept) 0.00 -0.04 – 0.05 0.955
bfi self pmc 0.01 -0.02 – 0.03 0.734
itt comp gmc -0.29 -0.33 – -0.25 <0.001
bfi self pmc * itt comp
gmc
-0.14 -0.16 – -0.11 <0.001
Random Effects
σ2 0.95
τ00 sub_id 0.15
τ11 sub_id.bfi_self_pmc 0.06
ρ01 sub_id 0.65
ICC 0.21
N sub_id 405
Observations 7695
Marginal R2 / Conditional R2 0.104 / 0.296

Did not change

Simple Slopes

bfi_nostereo_comp_pro <- emtrends(bfi_nostereo_comp_pro , ~ itt_comp_gmc,
                              var ="bfi_self_pmc",
                              at = c(threat_levels))


bfi_nostereo_comp_pro
##  itt_comp_gmc bfi_self_pmc.trend     SE  df asymp.LCL asymp.UCL
##         -1.07            0.15197 0.0214 Inf    0.1101    0.1939
##          0.00            0.00507 0.0149 Inf   -0.0242    0.0343
##          1.07           -0.14183 0.0208 Inf   -0.1825   -0.1011
## 
## Degrees-of-freedom method: asymptotic 
## Confidence level used: 0.95

Did not change

Composite x Target Condition

bfi_nostereo_pro <- lmer(bfi_targ_pmc ~ bfi_self_pmc*itt_comp_gmc*target_condition +
                     (bfi_self_pmc | sub_id), data = data_bfi_prolific)
summary(bfi_nostereo_pro)
## Linear mixed model fit by REML ['lmerMod']
## Formula: bfi_targ_pmc ~ bfi_self_pmc * itt_comp_gmc * target_condition +  
##     (bfi_self_pmc | sub_id)
##    Data: data_bfi_prolific
## 
## REML criterion at convergence: 22269.6
## 
## Scaled residuals: 
##     Min      1Q  Median      3Q     Max 
## -3.7284 -0.6144 -0.0055  0.6469  3.5731 
## 
## Random effects:
##  Groups   Name         Variance Std.Dev. Corr
##  sub_id   (Intercept)  0.11573  0.3402       
##           bfi_self_pmc 0.05207  0.2282   0.60
##  Residual              0.94543  0.9723       
## Number of obs: 7695, groups:  sub_id, 405
## 
## Fixed effects:
##                                                Estimate Std. Error t value
## (Intercept)                                     0.30971    0.05485   5.647
## bfi_self_pmc                                    0.16328    0.03907   4.180
## itt_comp_gmc                                   -0.08358    0.04373  -1.911
## target_conditionLOSS                           -0.59811    0.07521  -7.953
## target_conditionWARM                           -0.22388    0.06753  -3.315
## bfi_self_pmc:itt_comp_gmc                      -0.02834    0.03106  -0.912
## bfi_self_pmc:target_conditionLOSS              -0.27052    0.05389  -5.020
## bfi_self_pmc:target_conditionWARM              -0.13306    0.04819  -2.761
## itt_comp_gmc:target_conditionLOSS              -0.15637    0.06812  -2.296
## itt_comp_gmc:target_conditionWARM              -0.11660    0.06126  -1.903
## bfi_self_pmc:itt_comp_gmc:target_conditionLOSS -0.07409    0.04836  -1.532
## bfi_self_pmc:itt_comp_gmc:target_conditionWARM -0.09378    0.04363  -2.150
## 
## Correlation of Fixed Effects:
##             (Intr) bf_sl_ itt_c_ t_LOSS t_WARM bf__:__ b__:_L b__:_W i__:_L
## bfi_slf_pmc  0.410                                                         
## itt_cmp_gmc  0.779  0.320                                                  
## trgt_cnLOSS -0.729 -0.299 -0.568                                           
## trgt_cnWARM -0.812 -0.333 -0.633  0.592                                    
## bf_slf_p:__  0.321  0.780  0.398 -0.234 -0.260                             
## bf_s_:_LOSS -0.297 -0.725 -0.232  0.395  0.241 -0.566                      
## bf_s_:_WARM -0.332 -0.811 -0.259  0.242  0.412 -0.633   0.588              
## itt__:_LOSS -0.500 -0.205 -0.642 -0.003  0.406 -0.255   0.012  0.166       
## itt__:_WARM -0.556 -0.228 -0.714  0.406  0.262 -0.284   0.166  0.102  0.458
## b__:__:_LOS -0.206 -0.501 -0.255  0.012  0.167 -0.642  -0.014  0.406  0.382
## b__:__:_WAR -0.228 -0.556 -0.283  0.167  0.102 -0.712   0.403  0.250  0.182
##             i__:_W b__:__:_L
## bfi_slf_pmc                 
## itt_cmp_gmc                 
## trgt_cnLOSS                 
## trgt_cnWARM                 
## bf_slf_p:__                 
## bf_s_:_LOSS                 
## bf_s_:_WARM                 
## itt__:_LOSS                 
## itt__:_WARM                 
## b__:__:_LOS  0.182          
## b__:__:_WAR  0.402  0.457
tab_model(bfi_nostereo_pro)
  bfi_targ_pmc
Predictors Estimates CI p
(Intercept) 0.31 0.20 – 0.42 <0.001
bfi self pmc 0.16 0.09 – 0.24 <0.001
itt comp gmc -0.08 -0.17 – 0.00 0.056
target condition [LOSS] -0.60 -0.75 – -0.45 <0.001
target condition [WARM] -0.22 -0.36 – -0.09 0.001
bfi self pmc * itt comp
gmc
-0.03 -0.09 – 0.03 0.362
bfi self pmc * target
condition [LOSS]
-0.27 -0.38 – -0.16 <0.001
bfi self pmc * target
condition [WARM]
-0.13 -0.23 – -0.04 0.006
itt comp gmc * target
condition [LOSS]
-0.16 -0.29 – -0.02 0.022
itt comp gmc * target
condition [WARM]
-0.12 -0.24 – 0.00 0.057
(bfi self pmc * itt comp
gmc) * target condition
[LOSS]
-0.07 -0.17 – 0.02 0.126
(bfi self pmc * itt comp
gmc) * target condition
[WARM]
-0.09 -0.18 – -0.01 0.032
Random Effects
σ2 0.95
τ00 sub_id 0.12
τ11 sub_id.bfi_self_pmc 0.05
ρ01 sub_id 0.60
ICC 0.18
N sub_id 405
Observations 7695
Marginal R2 / Conditional R2 0.142 / 0.297

Did not change

Simple Slopes

bfi_nostereo_targ_pro <- emtrends(bfi_nostereo_pro, ~ itt_comp_gmc*target_condition,
                              var ="bfi_self_pmc",
                              at = c(targ_levels, threat_levels))


bfi_nostereo_targ_pro 
##  itt_comp_gmc target_condition bfi_self_pmc.trend     SE  df asymp.LCL
##         -1.07 CONTROL                     0.19361 0.0246 Inf  0.145418
##          0.00 CONTROL                     0.16328 0.0391 Inf  0.086714
##          1.07 CONTROL                     0.13296 0.0682 Inf -0.000797
##         -1.07 LOSS                        0.00237 0.0711 Inf -0.136997
##          0.00 LOSS                       -0.10723 0.0371 Inf -0.179981
##          1.07 LOSS                       -0.21684 0.0291 Inf -0.273819
##         -1.07 WARM                        0.16089 0.0526 Inf  0.057729
##          0.00 WARM                        0.03022 0.0282 Inf -0.025077
##          1.07 WARM                       -0.10044 0.0312 Inf -0.161506
##  asymp.UCL
##     0.2418
##     0.2398
##     0.2667
##     0.1417
##    -0.0345
##    -0.1599
##     0.2640
##     0.0855
##    -0.0394
## 
## Degrees-of-freedom method: asymptotic 
## Confidence level used: 0.95

Did not change

Stereotyping

Only composite

bfi_stereo_comp_pro <- lmer(bfi_targ_pmc ~ bfi_self_pmc*itt_comp_gmc*bfi_stereo_pmc +
                     (bfi_self_pmc + bfi_stereo_pmc | sub_id), data = data_bfi_prolific)
summary(bfi_stereo_comp_pro)
## Linear mixed model fit by REML ['lmerMod']
## Formula: bfi_targ_pmc ~ bfi_self_pmc * itt_comp_gmc * bfi_stereo_pmc +  
##     (bfi_self_pmc + bfi_stereo_pmc | sub_id)
##    Data: data_bfi_prolific
## 
## REML criterion at convergence: 20454.9
## 
## Scaled residuals: 
##     Min      1Q  Median      3Q     Max 
## -4.2655 -0.5014 -0.0403  0.6150  4.2109 
## 
## Random effects:
##  Groups   Name           Variance Std.Dev. Corr       
##  sub_id   (Intercept)    0.12934  0.3596              
##           bfi_self_pmc   0.03863  0.1965    0.47      
##           bfi_stereo_pmc 0.06842  0.2616   -0.69 -0.08
##  Residual                0.70147  0.8375              
## Number of obs: 7695, groups:  sub_id, 405
## 
## Fixed effects:
##                                           Estimate Std. Error t value
## (Intercept)                               0.011888   0.020777   0.572
## bfi_self_pmc                              0.070038   0.012904   5.428
## itt_comp_gmc                             -0.251778   0.019494 -12.916
## bfi_stereo_pmc                            0.228417   0.016169  14.127
## bfi_self_pmc:itt_comp_gmc                -0.076118   0.012059  -6.312
## bfi_self_pmc:bfi_stereo_pmc              -0.021265   0.006406  -3.320
## itt_comp_gmc:bfi_stereo_pmc               0.189356   0.015116  12.527
## bfi_self_pmc:itt_comp_gmc:bfi_stereo_pmc -0.002961   0.005821  -0.509
## 
## Correlation of Fixed Effects:
##                (Intr) bf_sl_ itt_c_ bf_st_ bf_slf_pmc:t__ bf_slf_pmc:b__ i__:__
## bfi_slf_pmc     0.300                                                          
## itt_cmp_gmc    -0.016  0.006                                                   
## bfi_str_pmc    -0.481  0.049  0.033                                            
## bf_slf_pmc:t__  0.006 -0.042  0.292 -0.006                                     
## bf_slf_pmc:b__  0.142 -0.084 -0.013  0.073  0.050                              
## itt_cmp_:__     0.033 -0.007 -0.480 -0.077  0.052         -0.001               
## bf_s_:__:__    -0.013  0.050  0.148 -0.004 -0.080         -0.196          0.057
tab_model(bfi_stereo_comp_pro)
  bfi_targ_pmc
Predictors Estimates CI p
(Intercept) 0.01 -0.03 – 0.05 0.567
bfi self pmc 0.07 0.04 – 0.10 <0.001
itt comp gmc -0.25 -0.29 – -0.21 <0.001
bfi stereo pmc 0.23 0.20 – 0.26 <0.001
bfi self pmc * itt comp
gmc
-0.08 -0.10 – -0.05 <0.001
bfi self pmc * bfi stereo
pmc
-0.02 -0.03 – -0.01 0.001
itt comp gmc * bfi stereo
pmc
0.19 0.16 – 0.22 <0.001
(bfi self pmc * itt comp
gmc) * bfi stereo pmc
-0.00 -0.01 – 0.01 0.611
Random Effects
σ2 0.70
τ00 sub_id 0.13
τ11 sub_id.bfi_self_pmc 0.04
τ11 sub_id.bfi_stereo_pmc 0.07
ρ01 0.47
-0.69
ICC 0.31
N sub_id 405
Observations 7695
Marginal R2 / Conditional R2 0.221 / 0.463

Did not change

Simple Slopes

bfi_stereo_comp_pro <- emtrends(bfi_stereo_comp_pro, ~ itt_comp_gmc,
                              var ="bfi_self_pmc",
                              at = c(threat_levels))


bfi_stereo_comp_pro
##  itt_comp_gmc bfi_self_pmc.trend     SE  df asymp.LCL asymp.UCL
##         -1.07             0.1520 0.0187 Inf    0.1154    0.1886
##          0.00             0.0707 0.0129 Inf    0.0454    0.0960
##          1.07            -0.0107 0.0179 Inf   -0.0457    0.0244
## 
## Degrees-of-freedom method: asymptotic 
## Confidence level used: 0.95

Did not change

Composite x Target Condition

bfi_stereo_pro <- lmer(bfi_targ_pmc ~ bfi_self_pmc*itt_comp_gmc*target_condition*bfi_stereo_pmc +
                     (bfi_self_pmc + bfi_stereo_pmc | sub_id), data = data_bfi_prolific)
summary(bfi_stereo_pro)
## Linear mixed model fit by REML ['lmerMod']
## Formula: bfi_targ_pmc ~ bfi_self_pmc * itt_comp_gmc * target_condition *  
##     bfi_stereo_pmc + (bfi_self_pmc + bfi_stereo_pmc | sub_id)
##    Data: data_bfi_prolific
## 
## REML criterion at convergence: 20393.5
## 
## Scaled residuals: 
##     Min      1Q  Median      3Q     Max 
## -4.2581 -0.5083 -0.0246  0.6100  4.1923 
## 
## Random effects:
##  Groups   Name           Variance Std.Dev. Corr       
##  sub_id   (Intercept)    0.09077  0.3013              
##           bfi_self_pmc   0.03690  0.1921    0.44      
##           bfi_stereo_pmc 0.05134  0.2266   -0.57  0.02
##  Residual                0.70135  0.8375              
## Number of obs: 7695, groups:  sub_id, 405
## 
## Fixed effects:
##                                                                Estimate
## (Intercept)                                                    0.280067
## bfi_self_pmc                                                   0.158890
## itt_comp_gmc                                                  -0.094328
## target_conditionLOSS                                          -0.615507
## target_conditionWARM                                          -0.189430
## bfi_stereo_pmc                                                 0.016193
## bfi_self_pmc:itt_comp_gmc                                     -0.007248
## bfi_self_pmc:target_conditionLOSS                             -0.141784
## bfi_self_pmc:target_conditionWARM                             -0.058419
## itt_comp_gmc:target_conditionLOSS                             -0.040330
## itt_comp_gmc:target_conditionWARM                             -0.049353
## bfi_self_pmc:bfi_stereo_pmc                                   -0.033151
## itt_comp_gmc:bfi_stereo_pmc                                    0.067417
## target_conditionLOSS:bfi_stereo_pmc                            0.445262
## target_conditionWARM:bfi_stereo_pmc                            0.200130
## bfi_self_pmc:itt_comp_gmc:target_conditionLOSS                -0.061065
## bfi_self_pmc:itt_comp_gmc:target_conditionWARM                -0.073954
## bfi_self_pmc:itt_comp_gmc:bfi_stereo_pmc                      -0.018925
## bfi_self_pmc:target_conditionLOSS:bfi_stereo_pmc              -0.018850
## bfi_self_pmc:target_conditionWARM:bfi_stereo_pmc               0.012389
## itt_comp_gmc:target_conditionLOSS:bfi_stereo_pmc               0.021707
## itt_comp_gmc:target_conditionWARM:bfi_stereo_pmc               0.048238
## bfi_self_pmc:itt_comp_gmc:target_conditionLOSS:bfi_stereo_pmc  0.044810
## bfi_self_pmc:itt_comp_gmc:target_conditionWARM:bfi_stereo_pmc  0.021115
##                                                               Std. Error
## (Intercept)                                                     0.049133
## bfi_self_pmc                                                    0.034002
## itt_comp_gmc                                                    0.039235
## target_conditionLOSS                                            0.067567
## target_conditionWARM                                            0.060540
## bfi_stereo_pmc                                                  0.038360
## bfi_self_pmc:itt_comp_gmc                                       0.027189
## bfi_self_pmc:target_conditionLOSS                               0.047482
## bfi_self_pmc:target_conditionWARM                               0.042107
## itt_comp_gmc:target_conditionLOSS                               0.061264
## itt_comp_gmc:target_conditionWARM                               0.055060
## bfi_self_pmc:bfi_stereo_pmc                                     0.015449
## itt_comp_gmc:bfi_stereo_pmc                                     0.031029
## target_conditionLOSS:bfi_stereo_pmc                             0.055177
## target_conditionWARM:bfi_stereo_pmc                             0.048172
## bfi_self_pmc:itt_comp_gmc:target_conditionLOSS                  0.042758
## bfi_self_pmc:itt_comp_gmc:target_conditionWARM                  0.038278
## bfi_self_pmc:itt_comp_gmc:bfi_stereo_pmc                        0.012571
## bfi_self_pmc:target_conditionLOSS:bfi_stereo_pmc                0.023706
## bfi_self_pmc:target_conditionWARM:bfi_stereo_pmc                0.020320
## itt_comp_gmc:target_conditionLOSS:bfi_stereo_pmc                0.049974
## itt_comp_gmc:target_conditionWARM:bfi_stereo_pmc                0.043889
## bfi_self_pmc:itt_comp_gmc:target_conditionLOSS:bfi_stereo_pmc   0.020682
## bfi_self_pmc:itt_comp_gmc:target_conditionWARM:bfi_stereo_pmc   0.018432
##                                                               t value
## (Intercept)                                                     5.700
## bfi_self_pmc                                                    4.673
## itt_comp_gmc                                                   -2.404
## target_conditionLOSS                                           -9.110
## target_conditionWARM                                           -3.129
## bfi_stereo_pmc                                                  0.422
## bfi_self_pmc:itt_comp_gmc                                      -0.267
## bfi_self_pmc:target_conditionLOSS                              -2.986
## bfi_self_pmc:target_conditionWARM                              -1.387
## itt_comp_gmc:target_conditionLOSS                              -0.658
## itt_comp_gmc:target_conditionWARM                              -0.896
## bfi_self_pmc:bfi_stereo_pmc                                    -2.146
## itt_comp_gmc:bfi_stereo_pmc                                     2.173
## target_conditionLOSS:bfi_stereo_pmc                             8.070
## target_conditionWARM:bfi_stereo_pmc                             4.154
## bfi_self_pmc:itt_comp_gmc:target_conditionLOSS                 -1.428
## bfi_self_pmc:itt_comp_gmc:target_conditionWARM                 -1.932
## bfi_self_pmc:itt_comp_gmc:bfi_stereo_pmc                       -1.505
## bfi_self_pmc:target_conditionLOSS:bfi_stereo_pmc               -0.795
## bfi_self_pmc:target_conditionWARM:bfi_stereo_pmc                0.610
## itt_comp_gmc:target_conditionLOSS:bfi_stereo_pmc                0.434
## itt_comp_gmc:target_conditionWARM:bfi_stereo_pmc                1.099
## bfi_self_pmc:itt_comp_gmc:target_conditionLOSS:bfi_stereo_pmc   2.167
## bfi_self_pmc:itt_comp_gmc:target_conditionWARM:bfi_stereo_pmc   1.146
tab_model(bfi_stereo_pro)
  bfi_targ_pmc
Predictors Estimates CI p
(Intercept) 0.28 0.18 – 0.38 <0.001
bfi self pmc 0.16 0.09 – 0.23 <0.001
itt comp gmc -0.09 -0.17 – -0.02 0.016
target condition [LOSS] -0.62 -0.75 – -0.48 <0.001
target condition [WARM] -0.19 -0.31 – -0.07 0.002
bfi stereo pmc 0.02 -0.06 – 0.09 0.673
bfi self pmc * itt comp
gmc
-0.01 -0.06 – 0.05 0.790
bfi self pmc * target
condition [LOSS]
-0.14 -0.23 – -0.05 0.003
bfi self pmc * target
condition [WARM]
-0.06 -0.14 – 0.02 0.165
itt comp gmc * target
condition [LOSS]
-0.04 -0.16 – 0.08 0.510
itt comp gmc * target
condition [WARM]
-0.05 -0.16 – 0.06 0.370
bfi self pmc * bfi stereo
pmc
-0.03 -0.06 – -0.00 0.032
itt comp gmc * bfi stereo
pmc
0.07 0.01 – 0.13 0.030
target condition [LOSS] *
bfi stereo pmc
0.45 0.34 – 0.55 <0.001
target condition [WARM] *
bfi stereo pmc
0.20 0.11 – 0.29 <0.001
(bfi self pmc * itt comp
gmc) * target condition
[LOSS]
-0.06 -0.14 – 0.02 0.153
(bfi self pmc * itt comp
gmc) * target condition
[WARM]
-0.07 -0.15 – 0.00 0.053
(bfi self pmc * itt comp
gmc) * bfi stereo pmc
-0.02 -0.04 – 0.01 0.132
(bfi self pmc * target
condition [LOSS]) * bfi
stereo pmc
-0.02 -0.07 – 0.03 0.427
(bfi self pmc * target
condition [WARM]) * bfi
stereo pmc
0.01 -0.03 – 0.05 0.542
(itt comp gmc * target
condition [LOSS]) * bfi
stereo pmc
0.02 -0.08 – 0.12 0.664
(itt comp gmc * target
condition [WARM]) * bfi
stereo pmc
0.05 -0.04 – 0.13 0.272
(bfi self pmc * itt comp
gmc * target condition
[LOSS]) * bfi stereo pmc
0.04 0.00 – 0.09 0.030
(bfi self pmc * itt comp
gmc * target condition
[WARM]) * bfi stereo pmc
0.02 -0.02 – 0.06 0.252
Random Effects
σ2 0.70
τ00 sub_id 0.09
τ11 sub_id.bfi_self_pmc 0.04
τ11 sub_id.bfi_stereo_pmc 0.05
ρ01 0.44
-0.57
ICC 0.26
N sub_id 405
Observations 7695
Marginal R2 / Conditional R2 0.277 / 0.462

The interaction of self, comp, and condition becomes marginal (.053) when we remove the UO participants

Simple Slopes

bfi_stereo_targ_pro <- emtrends(bfi_stereo_pro, ~ itt_comp_gmc*target_condition,
                              var ="bfi_self_pmc",
                              at = c(targ_levels, threat_levels))


bfi_stereo_targ_pro 
##  itt_comp_gmc target_condition bfi_self_pmc.trend     SE  df asymp.LCL
##         -1.07 CONTROL                      0.1670 0.0218 Inf    0.1243
##          0.00 CONTROL                      0.1599 0.0340 Inf    0.0932
##          1.07 CONTROL                      0.1528 0.0595 Inf    0.0362
##         -1.07 LOSS                         0.0926 0.0638 Inf   -0.0324
##          0.00 LOSS                         0.0187 0.0333 Inf   -0.0465
##          1.07 LOSS                        -0.0552 0.0255 Inf   -0.1052
##         -1.07 WARM                         0.1881 0.0464 Inf    0.0971
##          0.00 WARM                         0.1011 0.0249 Inf    0.0523
##          1.07 WARM                         0.0141 0.0274 Inf   -0.0396
##  asymp.UCL
##    0.20981
##    0.22660
##    0.26931
##    0.21765
##    0.08386
##   -0.00534
##    0.27900
##    0.14987
##    0.06791
## 
## Degrees-of-freedom method: asymptotic 
## Confidence level used: 0.95

However, simple slopes show that residual counter-projection still persists in the same circumstances, which is the most important result.

Multicolinearity of predictors

cor_bfi <- data_bfi %>% 
  select(bfi_self_pmc, bfi_stereo_pmc, bfi_targ_pmc, itt_comp_gmc) %>% 
  unique() %>% 
  rename("BFI: Self" = bfi_self_pmc,
         "BFI: Stereo" = bfi_stereo_pmc,
         "BFI: Target" = bfi_targ_pmc,
         "Threat Composite" = itt_comp_gmc)

correlations_preds <- cor(cor_bfi)

corrplot(correlations_preds, 
         is.corr = TRUE, 
         #method = "number", 
         method = 'color',
         tl.cex = .85,
         tl.col = 'black',
         addgrid.col = 'white',
         addCoef.col = 'grey50')

LS0tCnRpdGxlOiAiUmVzaWR1YWwgQ291bnRlci1Qcm9qZWN0aW9uIgpvdXRwdXQ6IAogICAgaHRtbF9kb2N1bWVudDoKICAgICAgY29kZV9kb3dubG9hZDogVFJVRQogICAgICB0b2M6IFRSVUUKICAgICAgdG9jX2Zsb2F0OgogICAgICAgIGNvbGxhcHNlZDogRkFMU0UKICAgICAgdG9jX2RlcHRoOiAxCiAgICAgIGNvZGVfZm9sZGluZzogaGlkZQplZGl0b3Jfb3B0aW9uczogCiAgY2h1bmtfb3V0cHV0X3R5cGU6IGNvbnNvbGUKLS0tCgpgYGB7ciBkYXRhIHByZXAsIGVjaG8gPSBGQUxTRSwgd2FybmluZyA9IEZBTFNFLCBtZXNzYWdlID0gRkFMU0UsIGVycm9yID0gRkFMU0V9CiMgTG9hZGluZyBwYWNrYWdlcwpsaWJyYXJ5KHBzeWNoKQpsaWJyYXJ5KGxtZTQpCmxpYnJhcnkobmxtZSkKbGlicmFyeShzalBsb3QpCmxpYnJhcnkoZWZmZWN0cykKbGlicmFyeShtYWdyaXR0cikgIyBwYXJ0IG9mIHRoZSB0aWR5dmVyc2UgYnV0IG11c3QgYmUgcmVhZCBpbiBvbiBpdHMgb3duCmxpYnJhcnkocGFyYW1ldGVycykKbGlicmFyeShkcGx5cikKbGlicmFyeSh0aWR5cikKbGlicmFyeShyaW8pCmxpYnJhcnkoZ2dwbG90MikKbGlicmFyeShlbW1lYW5zKQpsaWJyYXJ5KGNvcnJwbG90KQoKIyBGdW5jdGlvbnMgdG8gY2xlYW4gZG9jdW1lbnQsIGdldCBkYXRhIGZyb20gd2lkZSB0byBsb25nIGZvcm1hdApzb3VyY2UoImZ1bmN0aW9ucy9DbGVhbmluZy5SIikKCiMgU2V0dGluZyBnbG9iYWwgY2h1bmsgb3B0aW9ucwprbml0cjo6b3B0c19jaHVuayRzZXQoZWNobyA9IFRSVUUsCiAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlID0gRkFMU0UsCiAgICAgICAgICAgICAgICAgICAgICB3YXJuaW5nID0gRkFMU0UpCgpvcHRpb25zKHNjaXBlbiA9IDk5OSkKCiMgSW1wb3J0aW5nIGRhdGEKd2lkZV9kYXRhIDwtIGltcG9ydCgiZGF0YS9kaXNzX21haW5fY29tYmluZWRfZGF0YV9iYXNpY19jbGVhbi5jc3YiKQoKIyBDbGVhbmluZyBkYXRhIHVzaW5nIGZ1bmN0aW9ucwpsb25nX2RhdGFfYmZpIDwtIGdldF93cmFuZ2xlZF9iZmkod2lkZV9kYXRhKQpsb25nX2RhdGFfZWxpIDwtIGdldF93cmFuZ2xlZF9lbGkod2lkZV9kYXRhKQoKY2xlYW5fdmFyc19iZmkgPC0gZ2V0X3ZhcnNfY2xlYW5lZChsb25nX2RhdGFfYmZpKQpjbGVhbl92YXJzX2VsaSA8LSBnZXRfdmFyc19jbGVhbmVkKGxvbmdfZGF0YV9lbGkpCgpjbGVhbl9kYXRhX2JmaSA8LSByZW1vdmVfcGFydGljaXBhbnRzKGNsZWFuX3ZhcnNfYmZpKQpjbGVhbl9kYXRhX2VsaSA8LSByZW1vdmVfcGFydGljaXBhbnRzKGNsZWFuX3ZhcnNfZWxpKQoKY2xlYW5fZGF0YV9iZmkgJTw+JSAgICAKICBtdXRhdGUoaXR0X2NvbXAgPSByb3dNZWFucyhzZWxlY3QoLiwgYygicmVhbGlzdGljX3EiLCAic3ltYm9saWNfcSIpKSksCiAgICAgICAgIGl0dF9jb21wX2dtYyA9IHNjYWxlKGl0dF9jb21wLCBjZW50ZXIgPSBULCBzY2FsZSA9IEYpKQoKY2xlYW5fZGF0YV9lbGkgJTw+JSAgICAKICBtdXRhdGUoaXR0X2NvbXAgPSByb3dNZWFucyhzZWxlY3QoLiwgYygicmVhbGlzdGljX3EiLCAic3ltYm9saWNfcSIpKSksCiAgICAgICAgIGl0dF9jb21wX2dtYyA9IHNjYWxlKGl0dF9jb21wLCBjZW50ZXIgPSBULCBzY2FsZSA9IEYpKQpgYGAKCiMgUHJvamVjdGlvbiBmb3IgY29tcGFyaXNvbiAobm8gc3RlcmVvdHlwaW5nKSB7LnRhYnNldCAudGFic2V0LWZhZGUgLnRhYnNldC1waWxsc30KCiMjIE9ubHkgY29tcG9zaXRlCgpDb3JyZXNwb25kcyB0byBwYXRoIGIgaW4gdGhlIG1lZGlhdGlvbiAoZWZmZWN0IG9mIHRocmVhdCBjb21wb3NpdGUgb24gcHJvamVjdGlvbikKCmBgYHtyfQpkYXRhX2JmaSA8LSBjbGVhbl9kYXRhX2JmaSAlPiUgCiAgc2VsZWN0KHN1Yl9pZCwgYmZpX251bWJlciwgYmZpX3RhcmdfcG1jLCBiZmlfc2VsZl9wbWMsIGl0dF9jb21wX2dtYywKICAgICAgICAgdGFyZ2V0X2NvbmRpdGlvbiwgYmZpX3RhcmcsIGJmaV9zZWxmLCBiZmlfc3RlcmVvLCBiZmlfc3RlcmVvX3BtYykgJT4lIAogIHVuaXF1ZSgpICU+JSAKICBuYS5vbWl0KCkgCgpiZmlfbm9zdGVyZW9fY29tcCA8LSBsbWVyKGJmaV90YXJnX3BtYyB+IGJmaV9zZWxmX3BtYyppdHRfY29tcF9nbWMgKwogICAgICAgICAgICAgICAgICAgICAoYmZpX3NlbGZfcG1jIHwgc3ViX2lkKSwgZGF0YSA9IGRhdGFfYmZpKQpzdW1tYXJ5KGJmaV9ub3N0ZXJlb19jb21wKQp0YWJfbW9kZWwoYmZpX25vc3RlcmVvX2NvbXApCmBgYAoKCiMjIyBTaW1wbGUgU2xvcGVzCgpgYGB7cn0KdGhyZWF0X2xldmVscyA9IGxpc3QoaXR0X2NvbXBfZ21jID0gYygtMS4wNywgMC4wLCAxLjA3KSkKc2ltcHNsb3Blc19iZmlfbm9zdGVyZW8yIDwtIGVtdHJlbmRzKGJmaV9ub3N0ZXJlb19jb21wLCB+IGl0dF9jb21wX2dtYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyID0iYmZpX3NlbGZfcG1jIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXQgPSBjKHRocmVhdF9sZXZlbHMpKQoKCnNpbXBzbG9wZXNfYmZpX25vc3RlcmVvMgpwYWlycyhzaW1wc2xvcGVzX2JmaV9ub3N0ZXJlbzIpCmBgYAoKIyMjIFZpc3VhbGl6YXRpb24KCmBgYHtyfQpiZmlfbm9zdGVyZW9fY29tcF9kZiA8LSBlZmZlY3QoImJmaV9zZWxmX3BtYzppdHRfY29tcF9nbWMiLAogICAgICAgICAgICAgICAgICAgICAgICAgeGxldmVscyA9IGxpc3QoaXR0X2NvbXBfZ21jID0gYygtMS4wNywgMC4wLCAxLjA3KSksCiAgICAgICAgICAgICAgICAgICAgICAgICBtb2QgPSBiZmlfbm9zdGVyZW9fY29tcCkKCmJmaV9ub3N0ZXJlb19jb21wX2RmIDwtIGFzLmRhdGEuZnJhbWUoYmZpX25vc3RlcmVvX2NvbXBfZGYpCmJmaV9ub3N0ZXJlb19jb21wX2RmJGl0dF9jb21wX2dtYyA8LSBhcy5mYWN0b3IoYmZpX25vc3RlcmVvX2NvbXBfZGYkaXR0X2NvbXBfZ21jKQoKZ2dwbG90KGJmaV9ub3N0ZXJlb19jb21wX2RmLCBhZXMoYmZpX3NlbGZfcG1jLCBmaXQsIGdyb3VwID0gaXR0X2NvbXBfZ21jKSkgKwogIGdlb21fc21vb3RoKG1ldGhvZCA9ICJsbSIsIAogICAgICAgICAgICAgICAgc2l6ZSA9IC43LCAKICAgICAgICAgICAgICAgIHNlID0gRkFMU0UsCiAgICAgICAgICAgICAgICBjb2xvdXIgPSAiYmxhY2siLCAKICAgICAgICAgICAgICAgIGFlcyhsaW5ldHlwZSA9IGl0dF9jb21wX2dtYykpICsKICAgIHRoZW1lX21pbmltYWwoYmFzZV9zaXplID0gMTMpICsKICAgIHRoZW1lKGxlZ2VuZC5rZXkuc2l6ZSA9IHVuaXQoMSwgImNtIikpICsKICBzY2FsZV9saW5ldHlwZV9tYW51YWwoIlRocmVhdCBjb21wb3NpdGUiLAogICAgICAgICAgICAgICAgICAgICAgICBicmVha3MgPSBjKCItMS4wNyIsICIwIiwgIjEuMDciKSwgCiAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxzID0gYygiTG93IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBdmVyYWdlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJIaWdoIiksCiAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzID0gYygic29saWQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRhc2hlZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZG90dGVkIikpICsKICAgIGxhYnModGl0bGUgPSAiUHJvamVjdGlvbiBieSB0YXJnZXQtbGV2ZWwgdGhyZWF0IiwKICAgICAgICAgc3VidGl0bGUgPSAiVXNpbmcgdGhlIEJGSSIsCiAgICAgICB4ID0gIkJGSSByZXNwb25zZXMgZm9yIHNlbGYiLAogICAgICAgeSA9ICJCRkkgcmVzcG9uc2VzIGZvciB0YXJnZXQiKQpgYGAKCiMjIyBBc3N1bXB0aW9ucwoKYGBge3J9CiMgY2hlY2tpbmcgbm9ybWFsaXR5IG9mIGNvbmRpdGlvbmFsIHJlc2lkdWFscwpxcW5vcm0ocmVzaWR1YWxzKGJmaV9ub3N0ZXJlb19jb21wKSwgbWFpbj0iUS1RIHBsb3QgZm9yIGNvbmRpdGlvbmFsIHJlc2lkdWFscyIpCgojIGNoZWNraW5nIHRoZSBub3JtYWxpdHkgb2YgdGhlIHJhbmRvbSBlZmZlY3RzIChoZXJlIHJhbmRvbSBpbnRlcmNlcHQpOgpxcW5vcm0ocmFuZWYoYmZpX25vc3RlcmVvX2NvbXApJHN1Yl9pZCRiZmlfc2VsZl9wbWMsCiAgICAgICBtYWluPSJRLVEgcGxvdCBmb3IgdGhlIHNlbGYgcmFuZG9tIGVmZmVjdCIpCgojIENoZWNraW5nIHJlc2lkdWFscyBmb3IgaW50ZXJjZXB0CnFxbm9ybShyYW5lZihiZmlfbm9zdGVyZW9fY29tcCkkc3ViX2lkJGAoSW50ZXJjZXB0KWAsCiAgICAgICBtYWluPSJRLVEgcGxvdCBmb3IgdGhlIHJhbmRvbSBpbnRlcmNlcHQiKQoKcGxvdF9tb2RlbChiZmlfbm9zdGVyZW9fY29tcCwgdHlwZT0nZGlhZycpCmBgYAoKIyMgVGFyZ2V0IGNvbmRpdGlvbiB4IGNvbXBvc2l0ZQoKQWRkaW5nIGNvbmRpdGlvbiB0byB0ZXN0IHRoZSBlZmZlY3Qgb2YgY29udGV4dAoKYGBge3J9CmJmaV9ub3N0ZXJlbyA8LSBsbWVyKGJmaV90YXJnX3BtYyB+IGJmaV9zZWxmX3BtYyppdHRfY29tcF9nbWMqdGFyZ2V0X2NvbmRpdGlvbiArCiAgICAgICAgICAgICAgICAgICAgIChiZmlfc2VsZl9wbWMgfCBzdWJfaWQpLCBkYXRhID0gZGF0YV9iZmkpCnN1bW1hcnkoYmZpX25vc3RlcmVvKQp0YWJfbW9kZWwoYmZpX25vc3RlcmVvKQpgYGAKCiMjIyBTaW1wbGUgU2xvcGVzCgpgYGB7cn0KdGFyZ19sZXZlbHMgPC1saXN0KHRhcmdldF9jb25kaXRpb24gPSBjKCJDT05UUk9MIiwgIkxPU1MiLCAiV0FSTSIpKQpzaW1wc2xvcGVzX2JmaV9ub3N0ZXJlbzEgPC0gZW10cmVuZHMoYmZpX25vc3RlcmVvLCB+IGl0dF9jb21wX2dtYyp0YXJnZXRfY29uZGl0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgPSJiZmlfc2VsZl9wbWMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdCA9IGModGFyZ19sZXZlbHMsIHRocmVhdF9sZXZlbHMpKQoKCnNpbXBzbG9wZXNfYmZpX25vc3RlcmVvMQpwYWlycyhzaW1wc2xvcGVzX2JmaV9ub3N0ZXJlbzEpCmBgYAoKIyMjIFZpc3VhbGl6YXRpb24KCmBgYHtyfQpiZmlfbm9fc3RlcmVvX2RmIDwtIGVmZmVjdCgiYmZpX3NlbGZfcG1jOml0dF9jb21wX2dtYzp0YXJnZXRfY29uZGl0aW9uIiwKICAgICAgICAgICAgICAgICAgICAgICAgIHhsZXZlbHMgPSBsaXN0KGl0dF9jb21wX2dtYyA9IGMoLTEuMDcsIDAuMCwgMS4wNyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRfY29uZGl0aW9uID0gYygiQ09OVFJPTCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiV0FSTSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTE9TUyIpKSwKICAgICAgICAgICAgICAgICAgICAgICAgIG1vZCA9IGJmaV9ub3N0ZXJlbykKCmJmaV9ub19zdGVyZW9fZGYgPC0gYXMuZGF0YS5mcmFtZShiZmlfbm9fc3RlcmVvX2RmKQpiZmlfbm9fc3RlcmVvX2RmJGl0dF9jb21wX2dtYyA8LSBhcy5mYWN0b3IoYmZpX25vX3N0ZXJlb19kZiRpdHRfY29tcF9nbWMpCmJmaV9ub19zdGVyZW9fZGYkdGFyZ2V0X2NvbmRpdGlvbiA8LSBhcy5mYWN0b3IoYmZpX25vX3N0ZXJlb19kZiR0YXJnZXRfY29uZGl0aW9uKQoKYmZpX25vX3N0ZXJlb19kZiAlPD4lIAogIG11dGF0ZSh0YXJnZXRfY29uZGl0aW9uID0gZm9yY2F0czo6ZmN0X3JlbGV2ZWwodGFyZ2V0X2NvbmRpdGlvbiwgYygiQ09OVFJPTCIsICJXQVJNIiwgIkxPU1MiKSkpCgp0YXJnZXRfbGFiZWxzIDwtIGMoIkNPTlRST0wiID0gIkNvbnRyb2wiLAogICAgICAgICAgICAgICAgICAgIldBUk0iID0gIldhcm0iLAogICAgICAgICAgICAgICAgICAgIkxPU1MiID0gIkxvc3MiKQoKZ2dwbG90KGJmaV9ub19zdGVyZW9fZGYsIGFlcyhiZmlfc2VsZl9wbWMsIGZpdCwgZ3JvdXAgPSBpdHRfY29tcF9nbWMpKSArCiAgZ2VvbV9zbW9vdGgobWV0aG9kID0gImxtIiwgCiAgICAgICAgICAgICAgICBzaXplID0gLjcsIAogICAgICAgICAgICAgICAgc2UgPSBGQUxTRSwKICAgICAgICAgICAgICAgIGNvbG91ciA9ICJibGFjayIsIAogICAgICAgICAgICAgICAgYWVzKGxpbmV0eXBlID0gaXR0X2NvbXBfZ21jKSkgKwogICAgdGhlbWVfbWluaW1hbChiYXNlX3NpemUgPSAxMykgKwogICAgdGhlbWUobGVnZW5kLmtleS5zaXplID0gdW5pdCgxLCAiY20iKSkgKwogIGZhY2V0X3dyYXAofnRhcmdldF9jb25kaXRpb24sCiAgICAgICAgICAgICBsYWJlbGxlciA9IGxhYmVsbGVyKHRhcmdldF9jb25kaXRpb24gPSB0YXJnZXRfbGFiZWxzKSkgKwogIHNjYWxlX2xpbmV0eXBlX21hbnVhbCgiVGhyZWF0IGNvbXBvc2l0ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrcyA9IGMoIi0xLjA3IiwgIjAiLCAiMS4wNyIpLCAKICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHMgPSBjKCJMb3ciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkF2ZXJhZ2UiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkhpZ2giKSwKICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXMgPSBjKCJzb2xpZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGFzaGVkIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkb3R0ZWQiKSkgKwogICAgbGFicyh0aXRsZSA9ICJQcm9qZWN0aW9uIGJ5IHRhcmdldC1sZXZlbCB0aHJlYXQgYW5kIHRhcmdldCBjb25kaXRpb24iLAogICAgICAgICBzdWJ0aXRsZSA9ICJVc2luZyB0aGUgQkZJIiwKICAgICAgIHggPSAiQkZJIHJlc3BvbnNlcyBmb3Igc2VsZiIsCiAgICAgICB5ID0gIkJGSSByZXNwb25zZXMgZm9yIHRhcmdldCIpCmBgYAoKIyMjIyBSYXcKCmBgYHtyfQpwbG90X2RhdGFfaW50MSA8LSBkYXRhX2JmaSAlPiUgCiAgc2VsZWN0KHN1Yl9pZCwgYmZpX251bWJlciwgYmZpX3NlbGZfcG1jLCBiZmlfdGFyZ19wbWMsIGl0dF9jb21wX2dtYywgdGFyZ2V0X2NvbmRpdGlvbikKCnBsb3RfZGF0YV9pbnQxJGl0dF9jb21wX2dtY1tkYXRhX2JmaSRpdHRfY29tcF9nbWMgPCAtMS4wN10gPC0gIkxvdyIKcGxvdF9kYXRhX2ludDEkaXR0X2NvbXBfZ21jW2RhdGFfYmZpJGl0dF9jb21wX2dtYyA+IC0xLjA3ICYgZGF0YV9iZmkkaXR0X2NvbXBfZ21jIDwgMS4wN10gPC0gIkF2ZSIKcGxvdF9kYXRhX2ludDEkaXR0X2NvbXBfZ21jW2RhdGFfYmZpJGl0dF9jb21wX2dtYyA+IDEuMDddIDwtICJIaWdoIgoKCiAgIyBncm91cF9ieShiZmlfc2VsZl9wbWMsIGl0dF9jb21wX2dtYywgdGFyZ2V0X2NvbmRpdGlvbikgJT4lIAogICMgbXV0YXRlKG1lYW4gPSBtZWFuKGJmaV90YXJnX3BtYyksCiAgIyAgICAgICAgc2QgPSBzZChiZmlfdGFyZ19wbWMpKQoKZ2dwbG90KHBsb3RfZGF0YV9pbnQxLCBhZXMoYmZpX3NlbGZfcG1jLCBiZmlfdGFyZ19wbWMsIGdyb3VwID0gaXR0X2NvbXBfZ21jKSkgKwogIGdlb21fc21vb3RoKG1ldGhvZCA9ICJsbSIsIAogICAgICAgICAgICAgICAgc2l6ZSA9IC43LCAKICAgICAgICAgICAgICAgIGNvbG91ciA9ICJibGFjayIsIAogICAgICAgICAgICAgICAgYWVzKGxpbmV0eXBlID0gaXR0X2NvbXBfZ21jKSkgKwogICAgdGhlbWVfbWluaW1hbChiYXNlX3NpemUgPSAxMykgKwogICAgdGhlbWUobGVnZW5kLmtleS5zaXplID0gdW5pdCgxLCAiY20iKSkgKwogIGZhY2V0X3dyYXAofnRhcmdldF9jb25kaXRpb24sCiAgICAgICAgICAgICBsYWJlbGxlciA9IGxhYmVsbGVyKHRhcmdldF9jb25kaXRpb24gPSB0YXJnZXRfbGFiZWxzKSkKYGBgCgojIyMgQXNzdW1wdGlvbnMKCmBgYHtyfQojIGNoZWNraW5nIG5vcm1hbGl0eSBvZiBjb25kaXRpb25hbCByZXNpZHVhbHMKcXFub3JtKHJlc2lkdWFscyhiZmlfbm9zdGVyZW8pLCBtYWluPSJRLVEgcGxvdCBmb3IgY29uZGl0aW9uYWwgcmVzaWR1YWxzIikKCiMgY2hlY2tpbmcgdGhlIG5vcm1hbGl0eSBvZiB0aGUgcmFuZG9tIGVmZmVjdHMgKGhlcmUgcmFuZG9tIGludGVyY2VwdCk6CnFxbm9ybShyYW5lZihiZmlfbm9zdGVyZW8pJHN1Yl9pZCRiZmlfc2VsZl9wbWMsCiAgICAgICBtYWluPSJRLVEgcGxvdCBmb3IgdGhlIHNlbGYgcmFuZG9tIGVmZmVjdCIpCgojIENoZWNraW5nIHJlc2lkdWFscyBmb3IgaW50ZXJjZXB0CnFxbm9ybShyYW5lZihiZmlfbm9zdGVyZW8pJHN1Yl9pZCRgKEludGVyY2VwdClgLAogICAgICAgbWFpbj0iUS1RIHBsb3QgZm9yIHRoZSByYW5kb20gaW50ZXJjZXB0IikKCnBsb3RfbW9kZWwoYmZpX25vc3RlcmVvLCB0eXBlPSdkaWFnJykKYGBgCgpNb3JlIG5vcm1hbCwgYnV0IGEgbGl0dGxlIHRhaWwKCiMgUmVzaWR1YWwgQ291bnRlci1wcm9qZWN0aW9uICh3aXRoIHN0ZXJvZXR5cGluZykgey50YWJzZXQgLnRhYnNldC1mYWRlIC50YWJzZXQtcGlsbHN9CgojIyBPbmx5IGNvbXBvc2l0ZQoKIyMjIFJlc3VsdHMKCmBgYHtyfQpiZmlfc3RlcmVvX2NvbXAgPC0gbG1lcihiZmlfdGFyZ19wbWMgfiBiZmlfc2VsZl9wbWMqaXR0X2NvbXBfZ21jKmJmaV9zdGVyZW9fcG1jICsKICAgICAgICAgICAgICAgICAgICAgKGJmaV9zZWxmX3BtYyArIGJmaV9zdGVyZW9fcG1jIHwgc3ViX2lkKSwgZGF0YSA9IGRhdGFfYmZpKQpzdW1tYXJ5KGJmaV9zdGVyZW9fY29tcCkKdGFiX21vZGVsKGJmaV9zdGVyZW9fY29tcCkKYGBgCgoKIyMjIFNpbXBsZSBTbG9wZXMKCmBgYHtyfQpzaW1wc2xvcGVzX2JmaV9zdGVyZW8yIDwtIGVtdHJlbmRzKGJmaV9zdGVyZW9fY29tcCwgfiBpdHRfY29tcF9nbWMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciA9ImJmaV9zZWxmX3BtYyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0ID0gYyh0aHJlYXRfbGV2ZWxzKSkKCgpzaW1wc2xvcGVzX2JmaV9zdGVyZW8yCnBhaXJzKHNpbXBzbG9wZXNfYmZpX3N0ZXJlbzIpCmBgYAoKIyMjIFZpc3VhbGl6YXRpb24KCmBgYHtyfQpiZmlfc3RlcmVvX2NvbXBfZGYgPC0gZWZmZWN0KCJiZmlfc2VsZl9wbWM6aXR0X2NvbXBfZ21jIiwKICAgICAgICAgICAgICAgICAgICAgICAgIHhsZXZlbHMgPSBsaXN0KGl0dF9jb21wX2dtYyA9IGMoLTEuMDcsIDAuMCwgMS4wNykpLAogICAgICAgICAgICAgICAgICAgICAgICAgbW9kID0gYmZpX3N0ZXJlb19jb21wKQoKYmZpX3N0ZXJlb19jb21wX2RmIDwtIGFzLmRhdGEuZnJhbWUoYmZpX3N0ZXJlb19jb21wX2RmKQpiZmlfc3RlcmVvX2NvbXBfZGYkaXR0X2NvbXBfZ21jIDwtIGFzLmZhY3RvcihiZmlfc3RlcmVvX2NvbXBfZGYkaXR0X2NvbXBfZ21jKQoKZ2dwbG90KGJmaV9zdGVyZW9fY29tcF9kZiwgYWVzKGJmaV9zZWxmX3BtYywgZml0LCBncm91cCA9IGl0dF9jb21wX2dtYykpICsKICBnZW9tX3Ntb290aChtZXRob2QgPSAibG0iLCAKICAgICAgICAgICAgICAgIHNpemUgPSAuNywgCiAgICAgICAgICAgICAgICBzZSA9IEZBTFNFLAogICAgICAgICAgICAgICAgY29sb3VyID0gImJsYWNrIiwgCiAgICAgICAgICAgICAgICBhZXMobGluZXR5cGUgPSBpdHRfY29tcF9nbWMpKSArCiAgICB0aGVtZV9taW5pbWFsKGJhc2Vfc2l6ZSA9IDEzKSArCiAgICB0aGVtZShsZWdlbmQua2V5LnNpemUgPSB1bml0KDEsICJjbSIpKSArCiAgc2NhbGVfbGluZXR5cGVfbWFudWFsKCJUaHJlYXQgY29tcG9zaXRlIiwKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWtzID0gYygiLTEuMDciLCAiMCIsICIxLjA3IiksIAogICAgICAgICAgICAgICAgICAgICAgIGxhYmVscyA9IGMoIkxvdyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQXZlcmFnZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSGlnaCIpLAogICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcyA9IGMoInNvbGlkIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkYXNoZWQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRvdHRlZCIpKSArCiAgICBsYWJzKHRpdGxlID0gIlJlc2lkdWFsIHByb2plY3Rpb24gYnkgdGFyZ2V0LWxldmVsIHRocmVhdCIsCiAgICAgICAgIHN1YnRpdGxlID0gIlVzaW5nIHRoZSBCRkk7IEFmdGVyIGFjY291bnRpbmcgZm9yIHN0ZXJlb3R5cGluZyIsCiAgICAgICB4ID0gIkJGSSByZXNwb25zZXMgZm9yIHNlbGYiLAogICAgICAgeSA9ICJCRkkgcmVzcG9uc2VzIGZvciB0YXJnZXQiKQpgYGAKCiMjIyBBc3N1bXB0aW9ucwoKYGBge3J9CiMgY2hlY2tpbmcgbm9ybWFsaXR5IG9mIGNvbmRpdGlvbmFsIHJlc2lkdWFscwpxcW5vcm0ocmVzaWR1YWxzKGJmaV9zdGVyZW9fY29tcCksIG1haW49IlEtUSBwbG90IGZvciBjb25kaXRpb25hbCByZXNpZHVhbHMiKQoKIyBjaGVja2luZyB0aGUgbm9ybWFsaXR5IG9mIHRoZSByYW5kb20gZWZmZWN0cyAoaGVyZSByYW5kb20gaW50ZXJjZXB0KToKcXFub3JtKHJhbmVmKGJmaV9zdGVyZW9fY29tcCkkc3ViX2lkJGJmaV9zZWxmX3BtYywKICAgICAgIG1haW49IlEtUSBwbG90IGZvciB0aGUgc2VsZiByYW5kb20gZWZmZWN0IikKCnFxbm9ybShyYW5lZihiZmlfc3RlcmVvX2NvbXApJHN1Yl9pZCRiZmlfc3RlcmVvX3BtYywKICAgICAgIG1haW49IlEtUSBwbG90IGZvciB0aGUgc3RlcmVvdHlwaW5nIHJhbmRvbSBlZmZlY3QiKQoKIyBDaGVja2luZyByZXNpZHVhbHMgZm9yIGludGVyY2VwdApxcW5vcm0ocmFuZWYoYmZpX3N0ZXJlb19jb21wKSRzdWJfaWQkYChJbnRlcmNlcHQpYCwKICAgICAgIG1haW49IlEtUSBwbG90IGZvciB0aGUgcmFuZG9tIGludGVyY2VwdCIpCgpwbG90X21vZGVsKGJmaV9zdGVyZW9fY29tcCwgdHlwZT0nZGlhZycpCmBgYAoKQWxzbyBzZWVtcyB0byBoYXZlIHNsaWdodCB0YWlscywgYmFzaWNhbGx5IHdoZW4gc3RlcmVvdHlwaW5nIGlzIGFkZGVkIHRvIHRoZSBtb2RlbAoKIyMgQ29tcG9zaXRlIHggVGFyZ2V0IENvbmRpdGlvbgoKIyMjIFJlc3VsdHMKCmBgYHtyfQpiZmlfc3RlcmVvIDwtIGxtZXIoYmZpX3RhcmdfcG1jIH4gYmZpX3NlbGZfcG1jKml0dF9jb21wX2dtYyp0YXJnZXRfY29uZGl0aW9uKmJmaV9zdGVyZW9fcG1jICsKICAgICAgICAgICAgICAgICAgICAgKGJmaV9zZWxmX3BtYyArIGJmaV9zdGVyZW9fcG1jIHwgc3ViX2lkKSwgZGF0YSA9IGRhdGFfYmZpKQpzdW1tYXJ5KGJmaV9zdGVyZW8pCnRhYl9tb2RlbChiZmlfc3RlcmVvKQpgYGAKCgojIyMgU2ltcGxlIFNsb3BlcwoKYGBge3J9CnNpbXBzbG9wZXNfYmZpX3N0ZXJlbzEgPC0gZW10cmVuZHMoYmZpX3N0ZXJlbywgfiBpdHRfY29tcF9nbWMqdGFyZ2V0X2NvbmRpdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyID0iYmZpX3NlbGZfcG1jIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXQgPSBjKHRhcmdfbGV2ZWxzLCB0aHJlYXRfbGV2ZWxzKSkKCgpzaW1wc2xvcGVzX2JmaV9zdGVyZW8xCnBhaXJzKHNpbXBzbG9wZXNfYmZpX3N0ZXJlbzEpCmBgYAoKV2l0aCByZXNpZHVhbCBjb3VudGVyLXByb2plY3Rpb24sIHBlb3BsZSBkbyBub3QgcHJvamVjdCBub3IgY291bnRlci1wcm9qZWN0IHdoZW4gdGhleSByZXBvcnQgaGlnaGVyIHRoYW4gYXZlcmFnZSB0aHJlYXQuIE90aGVyd2lzZSwgcGVvcGxlIHByb2plY3Qgbm9ybWFsbHkuIFRob3VnaCBzbGlnaHRseSBkaWZmZXJlbnQgZnJvbSBwcmVkaWN0ZWQsIHRoaXMgZGVtb25zdHJhdGVzIHRoYXQgdGhyZWF0IGRvZXMgcmVkdWNlIHByb2plY3Rpb24gYWZ0ZXIgYWNjb3VudGluZyBmb3Igc3RlcmVvdHlwaW5nIHdpdGggdGhvc2Ugd2hvIHBlcmNlaXZlIGhpZ2ggdGhyZWF0LCBidXQgbm90IG90aGVycy4gSG93ZXZlciwgdGhlcmUgaXMgbm90IGEgcmVzaWR1YWwgZWZmZWN0IG9mIGNvdW50ZXItcHJvamVjdGlvbiB3aXRoIHRoZSBCRkkgLSB3aGljaCBJIGJlbGlldmUgaXMgY29uc2lzdGVudCB3aXRoIFBTUEIuCgpJcyB0aGlzIGNvbnNpc3RlbnQgd2l0aCBQU1BCPwoKIyMjIFZpc3VhbGl6YXRpb24KCmBgYHtyfQpiZmlfc3RlcmVvX2RmIDwtIGVmZmVjdCgiYmZpX3NlbGZfcG1jOml0dF9jb21wX2dtYzp0YXJnZXRfY29uZGl0aW9uIiwKICAgICAgICAgICAgICAgICAgICAgICAgIHhsZXZlbHMgPSBsaXN0KGl0dF9jb21wX2dtYyA9IGMoLTEuMDcsIDAuMCwgMS4wNyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRfY29uZGl0aW9uID0gYygiQ09OVFJPTCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiV0FSTSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTE9TUyIpKSwKICAgICAgICAgICAgICAgICAgICAgICAgIG1vZCA9IGJmaV9zdGVyZW8pCgpiZmlfc3RlcmVvX2RmIDwtIGFzLmRhdGEuZnJhbWUoYmZpX3N0ZXJlb19kZikKYmZpX3N0ZXJlb19kZiRpdHRfY29tcF9nbWMgPC0gYXMuZmFjdG9yKGJmaV9zdGVyZW9fZGYkaXR0X2NvbXBfZ21jKQpiZmlfc3RlcmVvX2RmJHRhcmdldF9jb25kaXRpb24gPC0gYXMuZmFjdG9yKGJmaV9zdGVyZW9fZGYkdGFyZ2V0X2NvbmRpdGlvbikKCmJmaV9zdGVyZW9fZGYgJTw+JSAKICBtdXRhdGUodGFyZ2V0X2NvbmRpdGlvbiA9IGZvcmNhdHM6OmZjdF9yZWxldmVsKHRhcmdldF9jb25kaXRpb24sIGMoIkNPTlRST0wiLCAiV0FSTSIsICJMT1NTIikpKQoKZ2dwbG90KGJmaV9zdGVyZW9fZGYsIGFlcyhiZmlfc2VsZl9wbWMsIGZpdCwgZ3JvdXAgPSBpdHRfY29tcF9nbWMpKSArCiAgZ2VvbV9zbW9vdGgobWV0aG9kID0gImxtIiwgCiAgICAgICAgICAgICAgICBzaXplID0gLjcsIAogICAgICAgICAgICAgICAgc2UgPSBGQUxTRSwKICAgICAgICAgICAgICAgIGNvbG91ciA9ICJibGFjayIsIAogICAgICAgICAgICAgICAgYWVzKGxpbmV0eXBlID0gaXR0X2NvbXBfZ21jKSkgKwogICAgdGhlbWVfbWluaW1hbChiYXNlX3NpemUgPSAxMykgKwogICAgdGhlbWUobGVnZW5kLmtleS5zaXplID0gdW5pdCgxLCAiY20iKSkgKwogIGZhY2V0X3dyYXAofnRhcmdldF9jb25kaXRpb24sCiAgICAgICAgICAgICBsYWJlbGxlciA9IGxhYmVsbGVyKHRhcmdldF9jb25kaXRpb24gPSB0YXJnZXRfbGFiZWxzKSkgKwogIHNjYWxlX2xpbmV0eXBlX21hbnVhbCgiVGhyZWF0IGNvbXBvc2l0ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrcyA9IGMoIi0xLjA3IiwgIjAiLCAiMS4wNyIpLCAKICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHMgPSBjKCJMb3ciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkF2ZXJhZ2UiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkhpZ2giKSwKICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXMgPSBjKCJzb2xpZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGFzaGVkIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkb3R0ZWQiKSkrCiAgICBsYWJzKHRpdGxlID0gIlJlc2lkdWFsIHByb2plY3Rpb24gYnkgdGFyZ2V0LWxldmVsIHRocmVhdCBhbmQgdGFyZ2V0IGNvbmRpdGlvbiIsCiAgICAgICAgIHN1YnRpdGxlID0gIlVzaW5nIHRoZSBCRkk7IEFmdGVyIGFjY291bnRpbmcgZm9yIHN0ZXJlb3R5cGluZyIsCiAgICAgICB4ID0gIkJGSSByZXNwb25zZXMgZm9yIHNlbGYiLAogICAgICAgeSA9ICJCRkkgcmVzcG9uc2VzIGZvciB0YXJnZXQiKQpgYGAKCiMjIyBBc3N1bXB0aW9ucwoKYGBge3J9CiMgY2hlY2tpbmcgbm9ybWFsaXR5IG9mIGNvbmRpdGlvbmFsIHJlc2lkdWFscwpxcW5vcm0ocmVzaWR1YWxzKGJmaV9zdGVyZW8pLCBtYWluPSJRLVEgcGxvdCBmb3IgY29uZGl0aW9uYWwgcmVzaWR1YWxzIikKCiMgY2hlY2tpbmcgdGhlIG5vcm1hbGl0eSBvZiB0aGUgcmFuZG9tIGVmZmVjdHMgCnFxbm9ybShyYW5lZihiZmlfc3RlcmVvKSRzdWJfaWQkYmZpX3NlbGZfcG1jLAogICAgICAgbWFpbj0iUS1RIHBsb3QgZm9yIHRoZSBzZWxmIHJhbmRvbSBlZmZlY3QiKQoKcXFub3JtKHJhbmVmKGJmaV9zdGVyZW8pJHN1Yl9pZCRiZmlfc3RlcmVvX3BtYywKICAgICAgIG1haW49IlEtUSBwbG90IGZvciB0aGUgc3RlcmVvdHlwaW5nIHJhbmRvbSBlZmZlY3QiKQoKIyBDaGVja2luZyByZXNpZHVhbHMgZm9yIGludGVyY2VwdApxcW5vcm0ocmFuZWYoYmZpX3N0ZXJlbykkc3ViX2lkJGAoSW50ZXJjZXB0KWAsCiAgICAgICBtYWluPSJRLVEgcGxvdCBmb3IgdGhlIHJhbmRvbSBpbnRlcmNlcHQiKQoKcGxvdF9tb2RlbChiZmlfc3RlcmVvLCB0eXBlPSdkaWFnJykKYGBgCgpEZWZpbml0ZWx5IGEgdGFpbCwgYnV0IG9ubHkgYSBmZXcgcG9pbnRzLCBzbyBtb3N0IGxpa2VseSByb2J1c3Q7IHN0ZXJlbyBpcyB0aGUgd29yc3QsIG1heSBuZWVkIHRvIHRyYW5zZm9ybSBpdAoKIyBDaGVja2luZyBlZmZlY3Qgb2YgcmVtb3ZpbmcgVU8gcGFydGljaXBhbnRzIHsudGFic2V0IC50YWJzZXQtZmFkZSAudGFic2V0LXBpbGxzfQoKIyMgTm8gc3RlcmVvdHlwaW5nCgojIyMgT25seSBjb21wb3NpdGUKCmBgYHtyfQpkYXRhX2JmaV9wcm9saWZpYyA8LSBjbGVhbl9kYXRhX2JmaSAlPiUgCiAgZmlsdGVyKGRhdGFfc2l0ZSAhPSAidW8iKSAlPiUgCiAgc2VsZWN0KHN1Yl9pZCwgYmZpX251bWJlciwgYmZpX3RhcmdfcG1jLCBiZmlfc2VsZl9wbWMsIGl0dF9jb21wX2dtYywKICAgICAgICAgdGFyZ2V0X2NvbmRpdGlvbiwgYmZpX3RhcmcsIGJmaV9zZWxmLCBiZmlfc3RlcmVvLCBiZmlfc3RlcmVvX3BtYykgJT4lIAogIHVuaXF1ZSgpICU+JSAKICBuYS5vbWl0KCkgCgpiZmlfbm9zdGVyZW9fY29tcF9wcm8gPC0gbG1lcihiZmlfdGFyZ19wbWMgfiBiZmlfc2VsZl9wbWMqaXR0X2NvbXBfZ21jICsKICAgICAgICAgICAgICAgICAgICAgKGJmaV9zZWxmX3BtYyB8IHN1Yl9pZCksIGRhdGEgPSBkYXRhX2JmaV9wcm9saWZpYykKc3VtbWFyeShiZmlfbm9zdGVyZW9fY29tcF9wcm8pCnRhYl9tb2RlbChiZmlfbm9zdGVyZW9fY29tcF9wcm8pCmBgYAoKRGlkIG5vdCBjaGFuZ2UKCiMjIyMgU2ltcGxlIFNsb3BlcwoKYGBge3J9CmJmaV9ub3N0ZXJlb19jb21wX3BybyA8LSBlbXRyZW5kcyhiZmlfbm9zdGVyZW9fY29tcF9wcm8gLCB+IGl0dF9jb21wX2dtYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyID0iYmZpX3NlbGZfcG1jIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXQgPSBjKHRocmVhdF9sZXZlbHMpKQoKCmJmaV9ub3N0ZXJlb19jb21wX3BybwpgYGAKCkRpZCBub3QgY2hhbmdlCgojIyMgQ29tcG9zaXRlIHggVGFyZ2V0IENvbmRpdGlvbgoKYGBge3J9CmJmaV9ub3N0ZXJlb19wcm8gPC0gbG1lcihiZmlfdGFyZ19wbWMgfiBiZmlfc2VsZl9wbWMqaXR0X2NvbXBfZ21jKnRhcmdldF9jb25kaXRpb24gKwogICAgICAgICAgICAgICAgICAgICAoYmZpX3NlbGZfcG1jIHwgc3ViX2lkKSwgZGF0YSA9IGRhdGFfYmZpX3Byb2xpZmljKQpzdW1tYXJ5KGJmaV9ub3N0ZXJlb19wcm8pCnRhYl9tb2RlbChiZmlfbm9zdGVyZW9fcHJvKQpgYGAKCkRpZCBub3QgY2hhbmdlCgojIyMjIFNpbXBsZSBTbG9wZXMKCmBgYHtyfQpiZmlfbm9zdGVyZW9fdGFyZ19wcm8gPC0gZW10cmVuZHMoYmZpX25vc3RlcmVvX3BybywgfiBpdHRfY29tcF9nbWMqdGFyZ2V0X2NvbmRpdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyID0iYmZpX3NlbGZfcG1jIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXQgPSBjKHRhcmdfbGV2ZWxzLCB0aHJlYXRfbGV2ZWxzKSkKCgpiZmlfbm9zdGVyZW9fdGFyZ19wcm8gCmBgYAoKRGlkIG5vdCBjaGFuZ2UgCgojIyBTdGVyZW90eXBpbmcKCiMjIyBPbmx5IGNvbXBvc2l0ZQoKYGBge3J9CmJmaV9zdGVyZW9fY29tcF9wcm8gPC0gbG1lcihiZmlfdGFyZ19wbWMgfiBiZmlfc2VsZl9wbWMqaXR0X2NvbXBfZ21jKmJmaV9zdGVyZW9fcG1jICsKICAgICAgICAgICAgICAgICAgICAgKGJmaV9zZWxmX3BtYyArIGJmaV9zdGVyZW9fcG1jIHwgc3ViX2lkKSwgZGF0YSA9IGRhdGFfYmZpX3Byb2xpZmljKQpzdW1tYXJ5KGJmaV9zdGVyZW9fY29tcF9wcm8pCnRhYl9tb2RlbChiZmlfc3RlcmVvX2NvbXBfcHJvKQpgYGAKCkRpZCBub3QgY2hhbmdlCgojIyMjIFNpbXBsZSBTbG9wZXMKCmBgYHtyfQpiZmlfc3RlcmVvX2NvbXBfcHJvIDwtIGVtdHJlbmRzKGJmaV9zdGVyZW9fY29tcF9wcm8sIH4gaXR0X2NvbXBfZ21jLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgPSJiZmlfc2VsZl9wbWMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdCA9IGModGhyZWF0X2xldmVscykpCgoKYmZpX3N0ZXJlb19jb21wX3BybwpgYGAKCkRpZCBub3QgY2hhbmdlCgojIyMgQ29tcG9zaXRlIHggVGFyZ2V0IENvbmRpdGlvbgoKYGBge3J9CmJmaV9zdGVyZW9fcHJvIDwtIGxtZXIoYmZpX3RhcmdfcG1jIH4gYmZpX3NlbGZfcG1jKml0dF9jb21wX2dtYyp0YXJnZXRfY29uZGl0aW9uKmJmaV9zdGVyZW9fcG1jICsKICAgICAgICAgICAgICAgICAgICAgKGJmaV9zZWxmX3BtYyArIGJmaV9zdGVyZW9fcG1jIHwgc3ViX2lkKSwgZGF0YSA9IGRhdGFfYmZpX3Byb2xpZmljKQpzdW1tYXJ5KGJmaV9zdGVyZW9fcHJvKQp0YWJfbW9kZWwoYmZpX3N0ZXJlb19wcm8pCmBgYAoKVGhlIGludGVyYWN0aW9uIG9mIHNlbGYsIGNvbXAsIGFuZCBjb25kaXRpb24gYmVjb21lcyBtYXJnaW5hbCAoLjA1Mykgd2hlbiB3ZSByZW1vdmUgdGhlIFVPIHBhcnRpY2lwYW50cwoKIyMjIyBTaW1wbGUgU2xvcGVzCgpgYGB7cn0KYmZpX3N0ZXJlb190YXJnX3BybyA8LSBlbXRyZW5kcyhiZmlfc3RlcmVvX3BybywgfiBpdHRfY29tcF9nbWMqdGFyZ2V0X2NvbmRpdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyID0iYmZpX3NlbGZfcG1jIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXQgPSBjKHRhcmdfbGV2ZWxzLCB0aHJlYXRfbGV2ZWxzKSkKCgpiZmlfc3RlcmVvX3RhcmdfcHJvIApgYGAKCkhvd2V2ZXIsIHNpbXBsZSBzbG9wZXMgc2hvdyB0aGF0IHJlc2lkdWFsIGNvdW50ZXItcHJvamVjdGlvbiBzdGlsbCBwZXJzaXN0cyBpbiB0aGUgc2FtZSBjaXJjdW1zdGFuY2VzLCB3aGljaCBpcyB0aGUgbW9zdCBpbXBvcnRhbnQgcmVzdWx0LgoKIyBNdWx0aWNvbGluZWFyaXR5IG9mIHByZWRpY3RvcnMgey50YWJzZXQgLnRhYnNldC1mYWRlIC50YWJzZXQtcGlsbHN9CgpgYGB7cn0KY29yX2JmaSA8LSBkYXRhX2JmaSAlPiUgCiAgc2VsZWN0KGJmaV9zZWxmX3BtYywgYmZpX3N0ZXJlb19wbWMsIGJmaV90YXJnX3BtYywgaXR0X2NvbXBfZ21jKSAlPiUgCiAgdW5pcXVlKCkgJT4lIAogIHJlbmFtZSgiQkZJOiBTZWxmIiA9IGJmaV9zZWxmX3BtYywKICAgICAgICAgIkJGSTogU3RlcmVvIiA9IGJmaV9zdGVyZW9fcG1jLAogICAgICAgICAiQkZJOiBUYXJnZXQiID0gYmZpX3RhcmdfcG1jLAogICAgICAgICAiVGhyZWF0IENvbXBvc2l0ZSIgPSBpdHRfY29tcF9nbWMpCgpjb3JyZWxhdGlvbnNfcHJlZHMgPC0gY29yKGNvcl9iZmkpCgpjb3JycGxvdChjb3JyZWxhdGlvbnNfcHJlZHMsIAogICAgICAgICBpcy5jb3JyID0gVFJVRSwgCiAgICAgICAgICNtZXRob2QgPSAibnVtYmVyIiwgCiAgICAgICAgIG1ldGhvZCA9ICdjb2xvcicsCiAgICAgICAgIHRsLmNleCA9IC44NSwKICAgICAgICAgdGwuY29sID0gJ2JsYWNrJywKICAgICAgICAgYWRkZ3JpZC5jb2wgPSAnd2hpdGUnLAogICAgICAgICBhZGRDb2VmLmNvbCA9ICdncmV5NTAnKQpgYGA=